//SYSTEM
#x:open-namespace
public class #x:model-name  : dzn.SystemComponent, IDisposable {
  public dzn.pump pump;
  #x:non-injected-instance-declare
  #x:injected-instance-declare
  #x:port-declaration

  public #x:model-name (dzn.Locator locator, String name="", dzn.Meta parent=null)
    : base(locator, name, parent) {
    this.pump = new dzn.pump();
    locator.set(this.pump);
    #x:injected-instance-initializer
    #x:non-injected-instance-initializer

    #x:provides-port-init
    #x:requires-port-init

    #x:shell-provides-meta-initializer
    #x:shell-requires-meta-initializer

    #x:shell-provides-in
    #x:shell-requires-out
    #x:shell-provides-out
    #x:shell-requires-in

    this.dzn_meta.requires = new List<dzn.port.Meta> {
      #x:requires-port-meta
    };
    this.dzn_meta.children = new List<dzn.Meta> {
      #x:meta-child
    };
    this.dzn_meta.ports_connected = new List<Action> {
      #x:check-bindings-list
    };

    #x:system-port-connect
  }
  protected virtual void Dispose(bool gc)
  {
    if(gc) {
      this.pump.Dispose();
    }
  }
  public void Dispose()
  {
    Dispose(true);
    GC.SuppressFinalize(this);
  }
  public void check_bindings()
  {
    dzn.RuntimeHelper.check_bindings(this.dzn_meta);
  }
}
#x:close-namespace
//////////////////////////////////////////////////////////////////////