--- /dev/null
+use strict;
+use warnings;
+
+use FindBin qw/$Bin/;
+use lib "$Bin/lib";
+
+use Test::More tests => 6;
+use Test::Exception;
+
+use SomeModelClass;
+my $i = SomeModelClass->new;
+
+throws_ok { $i->say_hello(); } qr/Validation failed/;
+throws_ok { $i->say_hello({}); } qr/Validation failed/;
+throws_ok { $i->say_hello({name => 'Fred'}); } qr/Validation failed/;
+my $r;
+lives_ok { $r = $i->say_hello({type => 'say_hello', name => 'Fred'}); };
+ok $r;
+is_deeply($r, { type => 'say_hello_response', body => "Hello Fred" });
+
--- /dev/null
+package DemoTypeLibrary;
+
+use MooseX::Types
+ -declare => [qw(
+ MessageDocument
+ )];
+
+use MooseX::Types::Moose qw/Str/;
+use MooseX::Types::Structured qw/Dict/;
+
+subtype MessageDocument,
+ as Dict[
+ name => Str,
+ type => Str,
+ ];
+
+
+1;
+