Index: perl/lib/Net/Jabber/Stanza.pm
===================================================================
--- perl/lib/Net/Jabber/Stanza.pm	(revision 0ff8d110c15c82bd1a982de30adadd5000de850b)
+++ perl/lib/Net/Jabber/Stanza.pm	(revision 0ff8d110c15c82bd1a982de30adadd5000de850b)
@@ -0,0 +1,1844 @@
+##############################################################################
+#
+#  This library is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU Library General Public
+#  License as published by the Free Software Foundation; either
+#  version 2 of the License, or (at your option) any later version.
+#
+#  This library is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  Library General Public License for more details.
+#
+#  You should have received a copy of the GNU Library General Public
+#  License along with this library; if not, write to the
+#  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+#  Boston, MA  02111-1307, USA.
+#
+#  Copyright (C) 1998-2004 Jabber Software Foundation http://jabber.org/
+#
+##############################################################################
+
+package Net::Jabber::Stanza;
+
+=head1 NAME
+
+Net::Jabber::Stanza - Jabber Stanza Module
+
+=head1 SYNOPSIS
+
+  Net::Jabber::Stanza is a private package that serves as a basis
+  for all Jabber stanzas generated by Net::Jabber.
+
+=head1 DESCRIPTION
+
+  This module is not meant to be used directly.  You should be using
+  either Net::Jabber::IQ, Net::Jabber::Message, Net::Jabber::Presence, or
+  another package that inherits from Net::Jabber::Stanza.
+
+  That said, this is where all of the namespaced methods are defined.
+
+  The current supported namespaces are:
+
+=cut
+
+# NS_BEGIN
+
+=pod
+
+    http://jabber.org/protocol/bytestreams
+    http://jabber.org/protocol/commands
+    http://jabber.org/protocol/disco#info
+    http://jabber.org/protocol/disco#items
+    http://jabber.org/protocol/feature-neg
+    http://jabber.org/protocol/muc
+    http://jabber.org/protocol/muc#admin
+    http://jabber.org/protocol/muc#user
+    http://jabber.org/protocol/pubsub
+    http://jabber.org/protocol/pubsub#event
+    http://jabber.org/protocol/pubsub#owner
+    http://jabber.org/protocol/si
+    http://jabber.org/protocol/si/profile/file-transfer
+    jabber:iq:agent - DEPRECATED
+    jabber:iq:agents - DEPRECATED
+    jabber:iq:autoupdate
+    jabber:iq:browse - DEPRECATED
+    jabber:iq:conference
+    jabber:iq:filter - DEPRECATED
+    jabber:iq:gateway
+    jabber:iq:last
+    jabber:iq:oob
+    jabber:iq:pass
+    jabber:iq:rpc
+    jabber:iq:search
+    jabber:iq:time
+    jabber:iq:version
+    jabber:x:autoupdate
+    jabber:x:conference
+    jabber:x:data
+    jabber:x:delay
+    jabber:x:encrypted
+    jabber:x:event
+    jabber:x:expire
+    jabber:x:oob
+    jabber:x:roster
+    jabber:x:signed
+
+=cut
+
+# NS_END
+
+=pod
+    
+  For more information on what these namespaces are for, visit 
+  http://www.jabber.org and browse the Jabber Programmers Guide.
+
+  The following tables can be read as follows:
+
+  ny:private:ns
+  
+  Name                        Type     Get  Set  Remove  Defined  Add
+  ==========================  =======  ===  ===  ======  =======  ===
+  Foo                         scalar    X    X     X        X
+  Bar                         child                                X 
+  Bars                        child     X
+  Test                        master    X    X
+
+  Withing the my:private:ns namespace, there exists the functions:
+
+    GetFoo(), SetFoo(), RemoveFoo(), DefinedFoo()
+    
+    AddBar()
+    
+    GetBars(), DefinedBars()
+    
+    GetTest(), SetMaster()
+
+  Hopefully it should be obvious how this all works.  If not feel free to
+  contact me and I'll work on adding more documentation.
+
+=cut
+
+# DOC_BEGIN
+=head1 http://jabber.org/protocol/bytestreams
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Activate                    scalar      X    X     X        X        
+  SID                         scalar      X    X     X        X        
+  StreamHostUsedJID           jid         X    X     X        X        
+  StreamHost                  child                                  X 
+  StreamHosts                 child       X          X        X        
+  ByteStreams                 master      X    X                       
+
+=head1 http://jabber.org/protocol/bytestreams - streamhost objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Host                        scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Port                        scalar      X    X     X        X        
+  ZeroConf                    scalar      X    X     X        X        
+  StreamHost                  master      X    X                       
+
+=head1 http://jabber.org/protocol/commands
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Action                      scalar      X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  SessionID                   scalar      X    X     X        X        
+  Status                      scalar      X    X     X        X        
+  Note                        child                                  X 
+  Notes                       child       X          X        X        
+  Command                     master      X    X                       
+
+=head1 http://jabber.org/protocol/commands - note objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Message                     scalar      X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Note                        master      X    X                       
+
+=head1 http://jabber.org/protocol/disco#info
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Feature                     child                                  X 
+  Features                    child       X          X        X        
+  Identities                  child       X          X        X        
+  Identity                    child                                  X 
+  DiscoInfo                   master      X    X                       
+
+=head1 http://jabber.org/protocol/disco#info - feature objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Var                         scalar      X    X     X        X        
+  Feature                     master      X    X                       
+
+=head1 http://jabber.org/protocol/disco#info - identity objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Category                    scalar      X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Identity                    master      X    X                       
+
+=head1 http://jabber.org/protocol/disco#items
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  DiscoItems                  master      X    X                       
+
+=head1 http://jabber.org/protocol/disco#items - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Action                      scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 http://jabber.org/protocol/feature-neg
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  FeatureNeg                  master      X    X                       
+
+=head1 http://jabber.org/protocol/muc
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Password                    scalar      X    X     X        X        
+  MUC                         master      X    X                       
+
+=head1 http://jabber.org/protocol/muc#admin
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  Admin                       master      X    X                       
+
+=head1 http://jabber.org/protocol/muc#admin - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  ActorJID                    jid         X    X     X        X        
+  Affiliation                 scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Nick                        scalar      X    X     X        X        
+  Reason                      scalar      X    X     X        X        
+  Role                        scalar      X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 http://jabber.org/protocol/muc#user
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Alt                         scalar      X    X     X        X        
+  Password                    scalar      X    X     X        X        
+  StatusCode                  scalar      X    X     X        X        
+  Invite                      child       X          X        X      X 
+  Item                        child       X          X        X      X 
+  User                        master      X    X                       
+
+=head1 http://jabber.org/protocol/muc#user - invite objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  From                        jid         X    X     X        X        
+  Reason                      scalar      X    X     X        X        
+  To                          jid         X    X     X        X        
+  Invite                      master      X    X                       
+
+=head1 http://jabber.org/protocol/muc#user - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  ActorJID                    jid         X    X     X        X        
+  Affiliation                 scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Nick                        scalar      X    X     X        X        
+  Reason                      scalar      X    X     X        X        
+  Role                        scalar      X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Affiliations                child       X          X        X      X 
+  Configure                   child       X          X        X      X 
+  Create                      child       X          X        X      X 
+  Delete                      child       X          X        X      X 
+  Entities                    child       X          X        X      X 
+  Entity                      child       X          X        X      X 
+  Item                        child       X          X        X      X 
+  Items                       child       X          X        X      X 
+  Options                     child       X          X        X      X 
+  Publish                     child       X          X        X      X 
+  Purge                       child       X          X        X      X 
+  Retract                     child       X          X        X      X 
+  Subscribe                   child       X          X        X      X 
+  Unsubscribe                 child       X          X        X      X 
+  PubSub                      master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - affiliations objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Entity                      child       X          X        X      X 
+  Affiliations                master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - configure objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Configure                   master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - create objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Create                      master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - delete objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Delete                      master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - entities objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Entity                      child       X          X        X      X 
+  Entities                    master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - entity objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Affiliation                 scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  Subscription                scalar      X    X     X        X        
+  SubscribeOptions            child       X          X        X      X 
+  Entity                      master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  ID                          scalar      X    X     X        X        
+  Payload                     raw         X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - items objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  MaxItems                    scalar      X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  Item                        child       X          X        X      X 
+  Items                       master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - options objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  JID                         jid         X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  Options                     master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - publish objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Item                        child       X          X        X      X 
+  Publish                     master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - purge objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Purge                       master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - retract objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Item                        child       X          X        X      X 
+  Retract                     master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - subscribe objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  JID                         jid         X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  Subscribe                   master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - subscribe-options objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Required                    flag        X    X     X        X        
+  SubscribeOptions            master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - unsubscribe objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  JID                         jid         X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  Unsubscribe                 master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub#event
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Delete                      child       X          X        X      X 
+  Items                       child       X          X        X      X 
+  Event                       master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub#event - delete objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Delete                      master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub#event - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  ID                          scalar      X    X     X        X        
+  Payload                     raw         X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub#event - items objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Item                        child       X          X        X      X 
+  Items                       master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub#owner
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Action                      scalar      X    X     X        X        
+  Configure                   child       X          X        X      X 
+  Owner                       master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub#owner - configure objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Configure                   master      X    X                       
+
+=head1 http://jabber.org/protocol/si
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  ID                          scalar      X    X     X        X        
+  MimeType                    scalar      X    X     X        X        
+  Profile                     scalar      X    X     X        X        
+  Stream                      master      X    X                       
+
+=head1 http://jabber.org/protocol/si/profile/file-transfer
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Date                        scalar      X    X     X        X        
+  Desc                        scalar      X    X     X        X        
+  Hash                        scalar      X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Range                       flag        X    X     X        X        
+  RangeLength                 scalar      X    X     X        X        
+  RangeOffset                 scalar      X    X     X        X        
+  Size                        scalar      X    X     X        X        
+  File                        master      X    X                       
+
+=head1 jabber:iq:agent - DEPRECATED
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Agents                      flag        X    X     X        X        
+  Description                 scalar      X    X     X        X        
+  GroupChat                   flag        X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Register                    flag        X    X     X        X        
+  Search                      flag        X    X     X        X        
+  Service                     scalar      X    X     X        X        
+  Transport                   scalar      X    X     X        X        
+  URL                         scalar      X    X     X        X        
+  Agent                       master      X    X                       
+
+=head1 jabber:iq:agents - DEPRECATED
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Agent                       child                                  X 
+  Agents                      child       X          X        X        
+
+=head1 jabber:iq:autoupdate
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Beta                        child                                  X 
+  Dev                         child                                  X 
+  Release                     child                                  X 
+  Releases                    child       X          X        X        
+
+=head1 jabber:iq:autoupdate - release objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Desc                        scalar      X    X     X        X        
+  Priority                    scalar      X    X     X        X        
+  URL                         scalar      X    X     X        X        
+  Version                     scalar      X    X     X        X        
+  Release                     master      X    X                       
+
+=head1 jabber:iq:browse - DEPRECATED
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Category                    scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  NS                          array       X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  Browse                      master      X    X                       
+
+=head1 jabber:iq:browse - item objects - DEPRECATED
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Category                    scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  NS                          array       X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  Browse                      master      X    X                       
+
+=head1 jabber:iq:conference
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  ID                          scalar      X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Nick                        scalar      X    X     X        X        
+  Privacy                     flag        X    X     X        X        
+  Secret                      scalar      X    X     X        X        
+  Conference                  master      X    X                       
+
+=head1 jabber:iq:filter - DEPRECATED
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Rule                        child                                  X 
+  Rules                       child       X          X        X        
+
+=head1 jabber:iq:filter - rule objects - DEPRECATED
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Body                        scalar      X    X     X        X        
+  Continued                   scalar      X    X     X        X        
+  Drop                        scalar      X    X     X        X        
+  Edit                        scalar      X    X     X        X        
+  Error                       scalar      X    X     X        X        
+  From                        scalar      X    X     X        X        
+  Offline                     scalar      X    X     X        X        
+  Reply                       scalar      X    X     X        X        
+  Resource                    scalar      X    X     X        X        
+  Show                        scalar      X    X     X        X        
+  Size                        scalar      X    X     X        X        
+  Subject                     scalar      X    X     X        X        
+  Time                        scalar      X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Unavailable                 scalar      X    X     X        X        
+  Rule                        master      X    X                       
+
+=head1 jabber:iq:gateway
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Desc                        scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Prompt                      scalar      X    X     X        X        
+  Gateway                     master      X    X                       
+
+=head1 jabber:iq:last
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Message                     scalar      X    X     X        X        
+  Seconds                     scalar      X    X     X        X        
+  Last                        master      X    X                       
+
+=head1 jabber:iq:oob
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Desc                        scalar      X    X     X        X        
+  URL                         scalar      X    X     X        X        
+  Oob                         master      X    X                       
+
+=head1 jabber:iq:pass
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Client                      scalar      X    X     X        X        
+  ClientPort                  scalar      X    X     X        X        
+  Close                       flag        X    X     X        X        
+  Expire                      scalar      X    X     X        X        
+  OneShot                     flag        X    X     X        X        
+  Proxy                       scalar      X    X     X        X        
+  ProxyPort                   scalar      X    X     X        X        
+  Server                      scalar      X    X     X        X        
+  ServerPort                  scalar      X    X     X        X        
+  Pass                        master      X    X                       
+
+=head1 jabber:iq:rpc
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  MethodCall                  child       X          X        X      X 
+  MethodResponse              child       X          X        X      X 
+
+=head1 jabber:iq:rpc - array objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Data                        child                                  X 
+  Datas                       child       X          X        X        
+
+=head1 jabber:iq:rpc - data objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Value                       child       X          X        X      X 
+
+=head1 jabber:iq:rpc - fault objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Value                       child       X          X        X      X 
+
+=head1 jabber:iq:rpc - member objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Name                        scalar      X    X     X        X        
+  Value                       child       X          X        X      X 
+  Member                      master      X    X                       
+
+=head1 jabber:iq:rpc - methodCall objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  MethodName                  scalar      X    X     X        X        
+  Params                      child       X          X        X      X 
+  MethodCall                  master      X    X                       
+
+=head1 jabber:iq:rpc - methodResponse objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Fault                       child       X          X        X      X 
+  Params                      child       X          X        X      X 
+
+=head1 jabber:iq:rpc - param objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Value                       child       X          X        X      X 
+
+=head1 jabber:iq:rpc - params objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Param                       child                                  X 
+  Params                      child       X          X        X        
+
+=head1 jabber:iq:rpc - struct objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Member                      child                                  X 
+  Members                     child       X          X        X        
+
+=head1 jabber:iq:rpc - value objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Base64                      scalar      X    X     X        X        
+  Boolean                     scalar      X    X     X        X        
+  DateTime                    scalar      X    X     X        X        
+  Double                      scalar      X    X     X        X        
+  I4                          scalar      X    X     X        X        
+  Int                         scalar      X    X     X        X        
+  String                      scalar      X    X     X        X        
+  Value                       scalar      X    X     X        X        
+  Array                       child       X          X        X      X 
+  Struct                      child       X          X        X      X 
+  RPCValue                    master      X    X                       
+
+=head1 jabber:iq:search
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Email                       scalar      X    X     X        X        
+  Family                      scalar      X    X     X        X        
+  First                       scalar      X    X     X        X        
+  Given                       scalar      X    X     X        X        
+  Instructions                scalar      X    X     X        X        
+  Key                         scalar      X    X     X        X        
+  Last                        scalar      X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Nick                        scalar      X    X     X        X        
+  Truncated                   flag        X    X     X        X        
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  Search                      master      X    X                       
+
+=head1 jabber:iq:search - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Email                       scalar      X    X     X        X        
+  Family                      scalar      X    X     X        X        
+  First                       scalar      X    X     X        X        
+  Given                       scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Key                         scalar      X    X     X        X        
+  Last                        scalar      X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Nick                        scalar      X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 jabber:iq:time
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Display                     special     X    X     X        X        
+  TZ                          special     X    X     X        X        
+  UTC                         special     X    X     X        X        
+  Time                        master      X    X                       
+
+=head1 jabber:iq:version
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Name                        scalar      X    X     X        X        
+  OS                          special     X    X     X        X        
+  Ver                         special     X    X     X        X        
+  Version                     master      X    X                       
+
+=head1 jabber:x:autoupdate
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  JID                         jid         X    X     X        X        
+  Autoupdate                  master      X    X                       
+
+=head1 jabber:x:conference
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  JID                         jid         X    X     X        X        
+  Conference                  master      X    X                       
+
+=head1 jabber:x:data
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Form                        scalar      X    X     X        X        
+  Instructions                scalar      X    X     X        X        
+  Title                       scalar      X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Field                       child                                  X 
+  Fields                      child       X          X        X        
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  Reported                    child       X          X        X      X 
+  Data                        master      X    X                       
+
+=head1 jabber:x:data - field objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Desc                        scalar      X    X     X        X        
+  Label                       scalar      X    X     X        X        
+  Required                    flag        X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Value                       array       X    X     X        X        
+  Var                         scalar      X    X     X        X        
+  Option                      child                                  X 
+  Options                     child       X          X        X        
+  Field                       master      X    X                       
+
+=head1 jabber:x:data - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Field                       child                                  X 
+  Fields                      child       X          X        X        
+  Item                        master      X    X                       
+
+=head1 jabber:x:data - option objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Label                       scalar      X    X     X        X        
+  Value                       scalar      X    X     X        X        
+  Option                      master      X    X                       
+
+=head1 jabber:x:data - reported objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Field                       child                                  X 
+  Fields                      child       X          X        X        
+  Reported                    master      X    X                       
+
+=head1 jabber:x:delay
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  From                        jid         X    X     X        X        
+  Message                     scalar      X    X     X        X        
+  Stamp                       timestamp   X    X     X        X        
+  Delay                       master      X    X                       
+
+=head1 jabber:x:encrypted
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Message                     scalar      X    X     X        X        
+  Encrypted                   master      X    X                       
+
+=head1 jabber:x:event
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Composing                   flag        X    X     X        X        
+  Delivered                   flag        X    X     X        X        
+  Displayed                   flag        X    X     X        X        
+  ID                          scalar      X    X     X        X        
+  Offline                     flag        X    X     X        X        
+  Event                       master      X    X                       
+
+=head1 jabber:x:expire
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Seconds                     scalar      X    X     X        X        
+  Expire                      master      X    X                       
+
+=head1 jabber:x:oob
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Desc                        scalar      X    X     X        X        
+  URL                         scalar      X    X     X        X        
+  Oob                         master      X    X                       
+
+=head1 jabber:x:roster
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  Roster                      master      X    X                       
+
+=head1 jabber:x:roster - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Ask                         scalar      X    X     X        X        
+  Group                       array       X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Subscription                scalar      X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 jabber:x:signed
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Signature                   scalar      X    X     X        X        
+  Signed                      master      X    X                       
+
+# DOC_BEGIN
+=head1 http://jabber.org/protocol/bytestreams
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Activate                    scalar      X    X     X        X        
+  SID                         scalar      X    X     X        X        
+  StreamHostUsedJID           jid         X    X     X        X        
+  StreamHost                  child                                  X 
+  StreamHosts                 child       X          X        X        
+  ByteStreams                 master      X    X                       
+
+=head1 http://jabber.org/protocol/bytestreams - streamhost objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Host                        scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Port                        scalar      X    X     X        X        
+  ZeroConf                    scalar      X    X     X        X        
+  StreamHost                  master      X    X                       
+
+=head1 http://jabber.org/protocol/commands
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Action                      scalar      X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  SessionID                   scalar      X    X     X        X        
+  Status                      scalar      X    X     X        X        
+  Note                        child                                  X 
+  Notes                       child       X          X        X        
+  Command                     master      X    X                       
+
+=head1 http://jabber.org/protocol/commands - note objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Message                     scalar      X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Note                        master      X    X                       
+
+=head1 http://jabber.org/protocol/disco#info
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Feature                     child                                  X 
+  Features                    child       X          X        X        
+  Identities                  child       X          X        X        
+  Identity                    child                                  X 
+  DiscoInfo                   master      X    X                       
+
+=head1 http://jabber.org/protocol/disco#info - feature objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Var                         scalar      X    X     X        X        
+  Feature                     master      X    X                       
+
+=head1 http://jabber.org/protocol/disco#info - identity objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Category                    scalar      X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Identity                    master      X    X                       
+
+=head1 http://jabber.org/protocol/disco#items
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  DiscoItems                  master      X    X                       
+
+=head1 http://jabber.org/protocol/disco#items - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Action                      scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 http://jabber.org/protocol/feature-neg
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  FeatureNeg                  master      X    X                       
+
+=head1 http://jabber.org/protocol/muc
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Password                    scalar      X    X     X        X        
+  MUC                         master      X    X                       
+
+=head1 http://jabber.org/protocol/muc#admin
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  Admin                       master      X    X                       
+
+=head1 http://jabber.org/protocol/muc#admin - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  ActorJID                    jid         X    X     X        X        
+  Affiliation                 scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Nick                        scalar      X    X     X        X        
+  Reason                      scalar      X    X     X        X        
+  Role                        scalar      X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 http://jabber.org/protocol/muc#user
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Alt                         scalar      X    X     X        X        
+  Password                    scalar      X    X     X        X        
+  StatusCode                  scalar      X    X     X        X        
+  Invite                      child       X          X        X      X 
+  Item                        child       X          X        X      X 
+  User                        master      X    X                       
+
+=head1 http://jabber.org/protocol/muc#user - invite objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  From                        jid         X    X     X        X        
+  Reason                      scalar      X    X     X        X        
+  To                          jid         X    X     X        X        
+  Invite                      master      X    X                       
+
+=head1 http://jabber.org/protocol/muc#user - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  ActorJID                    jid         X    X     X        X        
+  Affiliation                 scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Nick                        scalar      X    X     X        X        
+  Reason                      scalar      X    X     X        X        
+  Role                        scalar      X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Affiliations                child       X          X        X      X 
+  Configure                   child       X          X        X      X 
+  Create                      child       X          X        X      X 
+  Delete                      child       X          X        X      X 
+  Entities                    child       X          X        X      X 
+  Entity                      child       X          X        X      X 
+  Item                        child       X          X        X      X 
+  Items                       child       X          X        X      X 
+  Options                     child       X          X        X      X 
+  Publish                     child       X          X        X      X 
+  Purge                       child       X          X        X      X 
+  Retract                     child       X          X        X      X 
+  Subscribe                   child       X          X        X      X 
+  Unsubscribe                 child       X          X        X      X 
+  PubSub                      master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - affiliations objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Entity                      child       X          X        X      X 
+  Affiliations                master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - configure objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Configure                   master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - create objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Create                      master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - delete objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Delete                      master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - entities objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Entity                      child       X          X        X      X 
+  Entities                    master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - entity objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Affiliation                 scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  Subscription                scalar      X    X     X        X        
+  SubscribeOptions            child       X          X        X      X 
+  Entity                      master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  ID                          scalar      X    X     X        X        
+  Payload                     raw         X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - items objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  MaxItems                    scalar      X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  Item                        child       X          X        X      X 
+  Items                       master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - options objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  JID                         jid         X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  Options                     master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - publish objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Item                        child       X          X        X      X 
+  Publish                     master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - purge objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Purge                       master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - retract objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Item                        child       X          X        X      X 
+  Retract                     master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - subscribe objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  JID                         jid         X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  Subscribe                   master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - subscribe-options objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Required                    flag        X    X     X        X        
+  SubscribeOptions            master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub - unsubscribe objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  JID                         jid         X    X     X        X        
+  Node                        scalar      X    X     X        X        
+  Unsubscribe                 master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub#event
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Delete                      child       X          X        X      X 
+  Items                       child       X          X        X      X 
+  Event                       master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub#event - delete objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Delete                      master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub#event - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  ID                          scalar      X    X     X        X        
+  Payload                     raw         X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub#event - items objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Item                        child       X          X        X      X 
+  Items                       master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub#owner
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Action                      scalar      X    X     X        X        
+  Configure                   child       X          X        X      X 
+  Owner                       master      X    X                       
+
+=head1 http://jabber.org/protocol/pubsub#owner - configure objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Node                        scalar      X    X     X        X        
+  Configure                   master      X    X                       
+
+=head1 http://jabber.org/protocol/si
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  ID                          scalar      X    X     X        X        
+  MimeType                    scalar      X    X     X        X        
+  Profile                     scalar      X    X     X        X        
+  Stream                      master      X    X                       
+
+=head1 http://jabber.org/protocol/si/profile/file-transfer
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Date                        scalar      X    X     X        X        
+  Desc                        scalar      X    X     X        X        
+  Hash                        scalar      X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Range                       flag        X    X     X        X        
+  RangeLength                 scalar      X    X     X        X        
+  RangeOffset                 scalar      X    X     X        X        
+  Size                        scalar      X    X     X        X        
+  File                        master      X    X                       
+
+=head1 jabber:iq:agent - DEPRECATED
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Agents                      flag        X    X     X        X        
+  Description                 scalar      X    X     X        X        
+  GroupChat                   flag        X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Register                    flag        X    X     X        X        
+  Search                      flag        X    X     X        X        
+  Service                     scalar      X    X     X        X        
+  Transport                   scalar      X    X     X        X        
+  URL                         scalar      X    X     X        X        
+  Agent                       master      X    X                       
+
+=head1 jabber:iq:agents - DEPRECATED
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Agent                       child                                  X 
+  Agents                      child       X          X        X        
+
+=head1 jabber:iq:autoupdate
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Beta                        child                                  X 
+  Dev                         child                                  X 
+  Release                     child                                  X 
+  Releases                    child       X          X        X        
+
+=head1 jabber:iq:autoupdate - release objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Desc                        scalar      X    X     X        X        
+  Priority                    scalar      X    X     X        X        
+  URL                         scalar      X    X     X        X        
+  Version                     scalar      X    X     X        X        
+  Release                     master      X    X                       
+
+=head1 jabber:iq:browse - DEPRECATED
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Category                    scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  NS                          array       X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  Browse                      master      X    X                       
+
+=head1 jabber:iq:browse - item objects - DEPRECATED
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Category                    scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  NS                          array       X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  Browse                      master      X    X                       
+
+=head1 jabber:iq:conference
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  ID                          scalar      X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Nick                        scalar      X    X     X        X        
+  Privacy                     flag        X    X     X        X        
+  Secret                      scalar      X    X     X        X        
+  Conference                  master      X    X                       
+
+=head1 jabber:iq:filter - DEPRECATED
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Rule                        child                                  X 
+  Rules                       child       X          X        X        
+
+=head1 jabber:iq:filter - rule objects - DEPRECATED
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Body                        scalar      X    X     X        X        
+  Continued                   scalar      X    X     X        X        
+  Drop                        scalar      X    X     X        X        
+  Edit                        scalar      X    X     X        X        
+  Error                       scalar      X    X     X        X        
+  From                        scalar      X    X     X        X        
+  Offline                     scalar      X    X     X        X        
+  Reply                       scalar      X    X     X        X        
+  Resource                    scalar      X    X     X        X        
+  Show                        scalar      X    X     X        X        
+  Size                        scalar      X    X     X        X        
+  Subject                     scalar      X    X     X        X        
+  Time                        scalar      X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Unavailable                 scalar      X    X     X        X        
+  Rule                        master      X    X                       
+
+=head1 jabber:iq:gateway
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Desc                        scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Prompt                      scalar      X    X     X        X        
+  Gateway                     master      X    X                       
+
+=head1 jabber:iq:last
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Message                     scalar      X    X     X        X        
+  Seconds                     scalar      X    X     X        X        
+  Last                        master      X    X                       
+
+=head1 jabber:iq:oob
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Desc                        scalar      X    X     X        X        
+  URL                         scalar      X    X     X        X        
+  Oob                         master      X    X                       
+
+=head1 jabber:iq:pass
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Client                      scalar      X    X     X        X        
+  ClientPort                  scalar      X    X     X        X        
+  Close                       flag        X    X     X        X        
+  Expire                      scalar      X    X     X        X        
+  OneShot                     flag        X    X     X        X        
+  Proxy                       scalar      X    X     X        X        
+  ProxyPort                   scalar      X    X     X        X        
+  Server                      scalar      X    X     X        X        
+  ServerPort                  scalar      X    X     X        X        
+  Pass                        master      X    X                       
+
+=head1 jabber:iq:rpc
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  MethodCall                  child       X          X        X      X 
+  MethodResponse              child       X          X        X      X 
+
+=head1 jabber:iq:rpc - array objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Data                        child                                  X 
+  Datas                       child       X          X        X        
+
+=head1 jabber:iq:rpc - data objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Value                       child       X          X        X      X 
+
+=head1 jabber:iq:rpc - fault objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Value                       child       X          X        X      X 
+
+=head1 jabber:iq:rpc - member objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Name                        scalar      X    X     X        X        
+  Value                       child       X          X        X      X 
+  Member                      master      X    X                       
+
+=head1 jabber:iq:rpc - methodCall objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  MethodName                  scalar      X    X     X        X        
+  Params                      child       X          X        X      X 
+  MethodCall                  master      X    X                       
+
+=head1 jabber:iq:rpc - methodResponse objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Fault                       child       X          X        X      X 
+  Params                      child       X          X        X      X 
+
+=head1 jabber:iq:rpc - param objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Value                       child       X          X        X      X 
+
+=head1 jabber:iq:rpc - params objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Param                       child                                  X 
+  Params                      child       X          X        X        
+
+=head1 jabber:iq:rpc - struct objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Member                      child                                  X 
+  Members                     child       X          X        X        
+
+=head1 jabber:iq:rpc - value objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Base64                      scalar      X    X     X        X        
+  Boolean                     scalar      X    X     X        X        
+  DateTime                    scalar      X    X     X        X        
+  Double                      scalar      X    X     X        X        
+  I4                          scalar      X    X     X        X        
+  Int                         scalar      X    X     X        X        
+  String                      scalar      X    X     X        X        
+  Value                       scalar      X    X     X        X        
+  Array                       child       X          X        X      X 
+  Struct                      child       X          X        X      X 
+  RPCValue                    master      X    X                       
+
+=head1 jabber:iq:search
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Email                       scalar      X    X     X        X        
+  Family                      scalar      X    X     X        X        
+  First                       scalar      X    X     X        X        
+  Given                       scalar      X    X     X        X        
+  Instructions                scalar      X    X     X        X        
+  Key                         scalar      X    X     X        X        
+  Last                        scalar      X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Nick                        scalar      X    X     X        X        
+  Truncated                   flag        X    X     X        X        
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  Search                      master      X    X                       
+
+=head1 jabber:iq:search - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Email                       scalar      X    X     X        X        
+  Family                      scalar      X    X     X        X        
+  First                       scalar      X    X     X        X        
+  Given                       scalar      X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Key                         scalar      X    X     X        X        
+  Last                        scalar      X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Nick                        scalar      X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 jabber:iq:time
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Display                     special     X    X     X        X        
+  TZ                          special     X    X     X        X        
+  UTC                         special     X    X     X        X        
+  Time                        master      X    X                       
+
+=head1 jabber:iq:version
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Name                        scalar      X    X     X        X        
+  OS                          special     X    X     X        X        
+  Ver                         special     X    X     X        X        
+  Version                     master      X    X                       
+
+=head1 jabber:x:autoupdate
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  JID                         jid         X    X     X        X        
+  Autoupdate                  master      X    X                       
+
+=head1 jabber:x:conference
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  JID                         jid         X    X     X        X        
+  Conference                  master      X    X                       
+
+=head1 jabber:x:data
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Form                        scalar      X    X     X        X        
+  Instructions                scalar      X    X     X        X        
+  Title                       scalar      X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Field                       child                                  X 
+  Fields                      child       X          X        X        
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  Reported                    child       X          X        X      X 
+  Data                        master      X    X                       
+
+=head1 jabber:x:data - field objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Desc                        scalar      X    X     X        X        
+  Label                       scalar      X    X     X        X        
+  Required                    flag        X    X     X        X        
+  Type                        scalar      X    X     X        X        
+  Value                       array       X    X     X        X        
+  Var                         scalar      X    X     X        X        
+  Option                      child                                  X 
+  Options                     child       X          X        X        
+  Field                       master      X    X                       
+
+=head1 jabber:x:data - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Field                       child                                  X 
+  Fields                      child       X          X        X        
+  Item                        master      X    X                       
+
+=head1 jabber:x:data - option objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Label                       scalar      X    X     X        X        
+  Value                       scalar      X    X     X        X        
+  Option                      master      X    X                       
+
+=head1 jabber:x:data - reported objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Field                       child                                  X 
+  Fields                      child       X          X        X        
+  Reported                    master      X    X                       
+
+=head1 jabber:x:delay
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  From                        jid         X    X     X        X        
+  Message                     scalar      X    X     X        X        
+  Stamp                       timestamp   X    X     X        X        
+  Delay                       master      X    X                       
+
+=head1 jabber:x:encrypted
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Message                     scalar      X    X     X        X        
+  Encrypted                   master      X    X                       
+
+=head1 jabber:x:event
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Composing                   flag        X    X     X        X        
+  Delivered                   flag        X    X     X        X        
+  Displayed                   flag        X    X     X        X        
+  ID                          scalar      X    X     X        X        
+  Offline                     flag        X    X     X        X        
+  Event                       master      X    X                       
+
+=head1 jabber:x:expire
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Seconds                     scalar      X    X     X        X        
+  Expire                      master      X    X                       
+
+=head1 jabber:x:oob
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Desc                        scalar      X    X     X        X        
+  URL                         scalar      X    X     X        X        
+  Oob                         master      X    X                       
+
+=head1 jabber:x:roster
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Item                        child                                  X 
+  Items                       child       X          X        X        
+  Roster                      master      X    X                       
+
+=head1 jabber:x:roster - item objects
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Ask                         scalar      X    X     X        X        
+  Group                       array       X    X     X        X        
+  JID                         jid         X    X     X        X        
+  Name                        scalar      X    X     X        X        
+  Subscription                scalar      X    X     X        X        
+  Item                        master      X    X                       
+
+=head1 jabber:x:signed
+
+  Name                        Type       Get  Set  Remove  Defined  Add
+  ==========================  =========  ===  ===  ======  =======  ===
+  Signature                   scalar      X    X     X        X        
+  Signed                      master      X    X                       
+
+
+=cut
+
+# DOC_END
+
+=head1 AUTHOR
+
+Ryan Eatmon
+
+=head1 COPYRIGHT
+
+This module is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use Carp;
+use Net::XMPP::Stanza;
+use Net::Jabber::Namespaces;
+
+use base qw( Net::XMPP::Stanza );
+
+use vars qw( $TIMEZONE );
+
+if (eval "require Time::Timezone")
+{
+    $TIMEZONE = 1;
+    Time::Timezone->import(qw(tz_local_offset tz_name));
+}
+else
+{
+    $TIMEZONE = 0;
+}
+
+
+sub _init
+{
+    my $self = shift;
+
+    my $result = $self->SUPER::_init(@_);
+
+    if (defined($result))
+    {
+        $result->_CustomSet_init();
+        return $result;
+    }
+
+    $self->_CustomSet_init();
+    return;
+}
+
+sub GetX     { my $self = shift; $self->GetChild(@_);    } 
+sub DefinedX { my $self = shift; $self->DefinedChild(@_); }
+sub NewX     { my $self = shift; $self->NewChild(@_);    }
+sub AddX     { my $self = shift; $self->AddChild(@_);    } 
+sub RemoveX  { my $self = shift; $self->RemoveChild(@_); }
+
+sub GetQuery     { my $self = shift; $self->GetChild(@_);     }
+sub DefinedQuery { my $self = shift; $self->DefinedChild(@_); }
+sub NewQuery     { my $self = shift; $self->NewChild(@_);     }
+sub AddQuery     { my $self = shift; $self->AddChild(@_);     } 
+sub RemoveQuery  { my $self = shift; $self->RemoveChild(@_);  }
+
+sub _new_jid    { my $self = shift; return new Net::Jabber::JID(@_);    }
+sub _new_packet { my $self = shift; return new Net::Jabber::Stanza(@_); }
+
+
+sub _CustomSet_init
+{
+    my $self = shift;
+
+    $self->{CUSTOMSET}->{"time-display"} = \&_CustomSet_timedisplay;
+    $self->{CUSTOMSET}->{"time-tz"} = \&_CustomSet_timetz;
+    $self->{CUSTOMSET}->{"time-utc"} = \&_CustomSet_timeutc;
+    $self->{CUSTOMSET}->{"version-os"} = \&_CustomSet_versionos;
+    $self->{CUSTOMSET}->{"version-version"} = \&_CustomSet_versionversion;
+}
+
+
+sub _CustomSet_timedisplay
+{
+    my $self = shift;
+    my $value = shift;
+
+    return $value if defined($value);
+    $self->{DATA}->{__netjabbertime__} = time
+        unless exists($self->{DATA}->{__netjabbertime__});
+    return &Net::XMPP::GetTimeStamp("local",$self->{DATA}->{__netjabbertime__});
+}
+
+
+sub _CustomSet_timetz
+{
+    my $self = shift;
+    my $value = shift;
+    
+    if (!defined($value) && ($TIMEZONE == 1))
+    {
+        return uc(&tz_name(&tz_local_offset()))
+    }
+    return $value;
+}
+
+
+sub _CustomSet_timeutc
+{
+    my $self = shift;
+    my $value = shift;
+
+    return $value if defined($value);
+    $self->{DATA}->{__netjabbertime__} = time
+        unless exists($self->{DATA}->{__netjabbertime__});
+    return &Net::XMPP::GetTimeStamp("utc",$self->{DATA}->{__netjabbertime__},"stamp");
+}
+
+
+sub _CustomSet_versionos
+{
+    my $self = shift;
+    my $value = shift;
+
+    return (&POSIX::uname())[0];
+}
+
+
+sub _CustomSet_versionversion
+{
+    my $self = shift;
+    my $value = shift;
+    
+    if (defined($value))
+    {
+        $value .= " - [ Net::Jabber v$Net::Jabber::VERSION ]";
+    }
+    else
+    {
+        $value = "Net::Jabber v$Net::Jabber::VERSION";
+    }
+
+    return $value;
+}
+
+
+sub GetResults
+{
+    my $self = shift;
+    my %results;
+    foreach my $item ($self->GetItems())
+    {
+        my %result;
+        my @xData = $item->GetX("jabber:x:data");
+        if ($#xData == -1) 
+        {
+            %result = $item->GetItem();
+        }
+        else
+        {
+            foreach my $field ($xData[0]->GetFields())
+            {
+                $result{$field->GetVar()} = $field->GetValue();
+            }
+        }
+        $results{$item->GetJID()} = \%result;
+    }
+    return %results;
+}
+
+1;
