dry out a couple of lines
grammar :)
use preceding godoc-style comments for subsetting instead of comments within struct; generalize to any type; use go/doc package to parse ast

TODO: some methods are non-sensical for certain types, need to add
checks. Eg, Sum or Distinct of func, chan or array type.