export { Pointwise_SameWhenPassThrough };
export { Pointwise_SameWhenPassThroughPool };

import * as ValueDesc from "../../Unpacker/ValueDesc.js";
import * as Pool from "../../util/Pool.js";
import { Pointwise } from "./Operation_Pointwise.js";

/**
 * Pointwise convolution whose output will be the same as input when pass-through.
 *
 * It has the following properties:
 *   - ( nPassThroughStyleId == ValueDesc.PassThroughStyle.Singleton.Ids.PASS_THROUGH_STYLE_FILTER_1_BIAS_0 ) (0).
 *
 * Usually, this is used for non-squeeze-and-excitaion pointwise.
 *
 */
class Pointwise_SameWhenPassThrough extends Pointwise {

  /**
   */
  constructor(
    inputTensorPlaceholder0,
    outputChannelCount, bBias, nActivationId,
    nHigherHalfDifferent, outputChannelCount_lowerHalf, channelShuffler_outputGroupCount ) {

    super(
      inputTensorPlaceholder0,
      outputChannelCount, bBias, nActivationId,
      ValueDesc.PassThroughStyle.Singleton.Ids.PASS_THROUGH_STYLE_FILTER_1_BIAS_0,
      nHigherHalfDifferent, outputChannelCount_lowerHalf, channelShuffler_outputGroupCount );

    Pointwise_SameWhenPassThrough.setAsConstructor.call( this,
      inputTensorPlaceholder0,
      outputChannelCount, bBias, nActivationId,
      nHigherHalfDifferent, outputChannelCount_lowerHalf, channelShuffler_outputGroupCount );
  }

  /**
   * @param {Pointwise_SameWhenPassThrough} this
   *   The object to be initialized.
   *
   * @return {Pointwise_SameWhenPassThrough}
   *   Return the this object.
   */
  static setAsConstructor(
    inputTensorPlaceholder0,
    outputChannelCount, bBias, nActivationId,
    nHigherHalfDifferent, outputChannelCount_lowerHalf, channelShuffler_outputGroupCount ) {

    super.setAsConstructor.call( this,
      inputTensorPlaceholder0,
      outputChannelCount, bBias, nActivationId,
      ValueDesc.PassThroughStyle.Singleton.Ids.PASS_THROUGH_STYLE_FILTER_1_BIAS_0,
      nHigherHalfDifferent, outputChannelCount_lowerHalf, channelShuffler_outputGroupCount );

    return this;
  }

  /**
   * After calling this method, this object should be viewed as disposed and should not be operated again.
   */
  disposeResources_and_recycleToPool() {
    this.disposeResources();
    Pointwise_SameWhenPassThroughPool.Singleton.recycle( this );
  }

}


/**
 * Providing Operation.Pointwise_SameWhenPassThrough
 *
 */
class Pointwise_SameWhenPassThroughPool extends Pool.Root {

  constructor() {
    super( "Operation.Pointwise_SameWhenPassThroughPool",
      Pointwise_SameWhenPassThrough, Pointwise_SameWhenPassThrough.setAsConstructor );
  }

}

/**
 * Used as default Operation.Pointwise_SameWhenPassThrough provider.
 */
Pointwise_SameWhenPassThroughPool.Singleton = new Pointwise_SameWhenPassThroughPool();


@@ -39,54 +39,52 @@
  %7D;%0A
-ex
+%0Aim
 port 
-%7B Pointwise_SameWhenPassThroughPool %7D;%0A
+* as Pool from %22../../util/Pool.js%22;
 %0Aimp
@@ -142,52 +142,8 @@
 s%22;%0A
-import * as Pool from %22../../util/Pool.js%22;%0A
 impo
@@ -567,16 +567,303 @@
 wise %7B%0A%0A
+  /**%0A   * Used as default Operation.Pointwise_SameWhenPassThrough provider for conforming to Recyclable interface.%0A   */%0A  static Pool = new Pool.Root( %22Operation.Pointwise_SameWhenPassThrough.Pool%22,%0A    Pointwise_SameWhenPassThrough, Pointwise_SameWhenPassThrough.setAsConstructor );%0A%0A
   /**%0A  
@@ -1360,32 +1360,37 @@
 setAsConstructor
+_self
 .call( this,%0A   
@@ -1388,363 +1388,32 @@
 this
-,%0A      inputTensorPlaceholder0,%0A      outputChannelCount, bBias, nActivationId,%0A      nHigherHalfDifferent, outputChannelCount_lowerHalf, channelShuffler_outputGroupCount );%0A  %7D%0A%0A  /**%0A   * @param %7BPointwise_SameWhenPassThrough%7D this%0A   *   The object to be initialized.%0A   *%0A   * @return %7BPointwise_SameWhenPassThrough%7D%0A   *   Return the this object.%0A  
+ );%0A  %7D%0A%0A  /** @override
  */%0A
@@ -1638,20 +1638,9 @@
 ctor
-.call( this,
+(
 %0A   
@@ -1901,417 +1901,130 @@
     
-return this;%0A  %7D%0A%0A  /**%0A   * After calling this method, this object should be viewed as disposed and should not be operated again.%0A   */%0A  disposeResources_and_recycleToPool() %7B%0A    this.disposeResources();%0A    Pointwise_SameWhenPassThroughPool.Singleton.recycle(
+Pointwise_SameWhenPassThrough.setAsConstructor_self.call( this );%0A    return
  this
- )
 ;%0A  %7D%0A%0A
-%7D%0A%0A%0A/**%0A * Providing Operation.Pointwise_SameWhenPassThrough%0A *%0A */%0Aclass Pointwise_SameWhenPassThroughPool extends Pool.Root %7B%0A%0A  c
+  /** @override */%0A  static setAsC
 onst
@@ -2029,16 +2029,21 @@
 structor
+_self
 () %7B%0A   
@@ -2047,318 +2047,104 @@
     
-super( %22Operation.Pointwise_SameWhenPassThroughPool%22,%0A      Pointwise_SameWhenPassThrough, Pointwise_SameWhenPassThrough.setAsConstructor );%0A  %7D%0A%0A%7D%0A%0A/**%0A * Used as default Operation.Pointwise_SameWhenPassThrough provider.%0A */%0APointwise_SameWhenPassThroughPool.Singleton = new Pointwise_SameWhenPassThroughPool();
+// Do nothing.%0A  %7D%0A%0A  /** @override */%0A  disposeResources() %7B%0A    super.disposeResources();%0A  %7D%0A%0A%7D
 %0A%0A

Update Operation_Pointwise_SameWhenPassThrough.js