/**
 * @author Martin Bravenboer <martin@cs.uu.nl>
 */
module dryad/reclassify/declare/ClassMembers
strategies

  /**
   * Declares class members.
   *
   * @type Class Object -> Class Object
   */
  declare-class-members(cont) = ?this; instanceof-JavaClass;
    {| ReclassifySimpleInScopeTypeName, ReclassifySimpleInScopeVar, QualifySimpleInScopeTypeName : 
      where(
        <get-fields> this
        ; map({x:
            get-simple-name => x
            ; <declare-field-var-helper> VarDec(Id(x))
          })
        ; <get-member-types> this
        ; map(
            get-canonical-name
            ; declare-type-helper
          )
      )
    ; cont
    |}