public boolean load(int type, BitBuffer bitBuffer, TileFeature map, TileFeatureArg prevArg, boolean save) {
        boolean sameAsPrevious = bitBuffer.nextBits( 1 ) != 0;
        if ( sameAsPrevious ) {
            // Use previous argument value.
            if(prevArg!=null){
                 setValue( ((SimpleArg)prevArg).getValue(0) );
            }
        } else {
            // Not same as previous.
            // Read if multiple values.
            boolean multi = bitBuffer.nextBits( 1 ) != 0;
            if ( multi ) {
                // Multiple values.
                int nbrValues = bitBuffer.nextBits( 5 );
                if(this.valueByScaleIdx == null || this.valueByScaleIdx.length < nbrValues) {
                    valueByScaleIdx = new int[nbrValues];
                }
                for ( int i = 0; i < nbrValues; i++ ) {
                    int value = bitBuffer.nextBits(size);
                    valueByScaleIdx[i] = value;
                }
            } else {
                // Only one value.
                m_value = bitBuffer.nextBits(size);
            }
        }
        
        if(save)
            map.addArgs(new SimpleArg(type,getName(),size,valueByScaleIdx,m_value));
        return true;
    }