All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hydra.langs.haskell.ast.Module Maven / Gradle / Ivy

package hydra.langs.haskell.ast;

import java.io.Serializable;

public class Module implements Serializable {
  public static final hydra.core.Name NAME = new hydra.core.Name("hydra/langs/haskell/ast.Module");
  
  public final java.util.Optional head;
  
  public final java.util.List imports;
  
  public final java.util.List declarations;
  
  public Module (java.util.Optional head, java.util.List imports, java.util.List declarations) {
    this.head = head;
    this.imports = imports;
    this.declarations = declarations;
  }
  
  @Override
  public boolean equals(Object other) {
    if (!(other instanceof Module)) {
      return false;
    }
    Module o = (Module) (other);
    return head.equals(o.head) && imports.equals(o.imports) && declarations.equals(o.declarations);
  }
  
  @Override
  public int hashCode() {
    return 2 * head.hashCode() + 3 * imports.hashCode() + 5 * declarations.hashCode();
  }
  
  public Module withHead(java.util.Optional head) {
    return new Module(head, imports, declarations);
  }
  
  public Module withImports(java.util.List imports) {
    return new Module(head, imports, declarations);
  }
  
  public Module withDeclarations(java.util.List declarations) {
    return new Module(head, imports, declarations);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy