def param_help(self, args):
        '''show help on a parameter'''
        if len(args) == 0:
            print("Usage: param help PARAMETER_NAME")
            return

        htree = self.param_help_tree()
        if htree is None:
            return

        for h in args:
            h = h.upper()
            if h in htree:
                help = htree[h]
                print("%s: %s\n" % (h, help.get('humanName')))
                print(help.get('documentation'))
                try:
                    print("\n")
                    for f in help.field:
                        print("%s : %s" % (f.get('name'), str(f)))
                except Exception as e:
                    pass
                try:
                    # The entry "values" has been blatted by a cython
                    # function at this point, so we instead get the
                    # "values" by offset rather than name.
                    children = help.getchildren()
                    vchild = children[0]
                    values = vchild.getchildren()
                    if len(values):
                        print("\nValues: ")
                        for v in values:
                            print("\t%s : %s" % (v.get('code'), str(v)))
                except Exception as e:
                    print("Caught exception %s" % repr(e))
                    pass
            else:
                print("Parameter '%s' not found in documentation" % h)
show help on a parameter