Support arbitrary constructors

Support constructors other than [], ::, and (,)