type Puppet::Resource::Param = Object[{

attributes => {
  type => Type,
  name => String[1],
  name_var => { type => Boolean, value => false }
},
equality => [name],

}]

type Puppet::Resource::ResourceType3 = Object[{

attributes => {
  name           => String[1],
  properties     => { type => Array[Puppet::Resource::Param], value = []},
  parameters     => { type => Array[Puppet::Resource::Param], value = []},
  title_patterns => { type => Optional[Hash[Regexp, Array[String[1]]], value => nil },
  isomorphic     => { type => Boolean, value => true },
  capability     => { type => Boolean, value => false },
},
equality => [name],

}]