1. Keep it functional. Only annotations and generators should utilize OOP
  2. Every type of class that may have code generated for it is located in example/lib