class LazyServiceConfiguration extends ServiceConfiguration {
    /** */
    private static final long serialVersionUID = 0L;

    /** Service instance. */
    @GridToStringExclude
    private transient Service srvc;

    /** Service interceptors. */
    @GridToStringExclude
    private transient ServiceCallInterceptor[] interceptors;

    /** */
    private String srvcClsName;

    /** */
    private byte[] srvcBytes;

    /** */
    private byte[] interceptorsBytes;

    /** Names of platform service methods to build service statistics. */
    @GridToStringExclude
    private String[] platformMtdNames;

    /**
     * Default constructor.
     */
    public LazyServiceConfiguration() {
        // No-op.
    }

    /**
     * @param cfg Configuration.
     * @param srvcBytes Marshalled service.
     * @param interceptorsBytes Marshalled interceptors.
     */
    public LazyServiceConfiguration(ServiceConfiguration cfg, byte[] srvcBytes, @Nullable byte[] interceptorsBytes) {
        assert cfg.getService() != null : cfg;
        assert srvcBytes != null;

        name = cfg.getName();
        totalCnt = cfg.getTotalCount();
        maxPerNodeCnt = cfg.getMaxPerNodeCount();
        cacheName = cfg.getCacheName();
        affKey = cfg.getAffinityKey();
        nodeFilter = cfg.getNodeFilter();
        this.srvcBytes = srvcBytes;
        srvc = cfg.getService();
        srvcClsName = srvc.getClass().getName();
        isStatisticsEnabled = cfg.isStatisticsEnabled();
        interceptors = cfg.getInterceptors();
        this.interceptorsBytes = interceptorsBytes;
    }

    /**
     * @return Service bytes.
     */
    public byte[] serviceBytes() {
        return srvcBytes;
    }

    /**
     * @return Service class name.
     */
    public String serviceClassName() {
        return srvcClsName;
    }

    /** {@inheritDoc} */
    @Override public Service getService() {
        assert srvc != null : this;

        return srvc;
    }

    /** {@inheritDoc} */
    @Override public ServiceCallInterceptor[] getInterceptors() {
        return interceptors;
    }

    /**
     * @return Interceptors bytes.
     */
    public byte[] interceptorBytes() {
        return interceptorsBytes;
    }

    /** {@inheritDoc} */
    @SuppressWarnings("RedundantIfStatement")
    @Override public boolean equalsIgnoreNodeFilter(Object o) {<FILL_FUNCTION_BODY>}

    /** */
    LazyServiceConfiguration platformMtdNames(String[] platformMtdNames) {
        this.platformMtdNames = platformMtdNames;

        return this;
    }

    /** @return Names of known service methods. */
    String[] platformMtdNames() {
        return platformMtdNames;
    }

    /** {@inheritDoc} */
    @Override public String toString() {
        String svcCls = srvc == null ? "" : srvc.getClass().getSimpleName();
        String nodeFilterCls = nodeFilter == null ? "" : nodeFilter.getClass().getSimpleName();

        return S.toString(LazyServiceConfiguration.class, this, "svcCls", svcCls, "nodeFilterCls", nodeFilterCls);
    }
}

        if (this == o)
            return true;

        if (o == null || getClass() != o.getClass())
            return false;

        LazyServiceConfiguration that = (LazyServiceConfiguration)o;

        if (maxPerNodeCnt != that.getMaxPerNodeCount())
            return false;

        if (totalCnt != that.getTotalCount())
            return false;

        if (affKey != null ? !affKey.equals(that.getAffinityKey()) : that.getAffinityKey() != null)
            return false;

        if (cacheName != null ? !cacheName.equals(that.getCacheName()) : that.getCacheName() != null)
            return false;

        if (name != null ? !name.equals(that.getName()) : that.getName() != null)
            return false;

        if (!Arrays.equals(srvcBytes, that.srvcBytes))
            return false;

        if (!Arrays.equals(interceptorsBytes, that.interceptorsBytes))
            return false;

        return true;
    
<methods>public non-sealed void <init>() ,public boolean equals(java.lang.Object) ,public boolean equalsIgnoreNodeFilter(java.lang.Object) ,public java.lang.Object getAffinityKey() ,public java.lang.String getCacheName() ,public org.apache.ignite.services.ServiceCallInterceptor[] getInterceptors() ,public int getMaxPerNodeCount() ,public java.lang.String getName() ,public IgnitePredicate<org.apache.ignite.cluster.ClusterNode> getNodeFilter() ,public org.apache.ignite.services.Service getService() ,public int getTotalCount() ,public int hashCode() ,public boolean isStatisticsEnabled() ,public org.apache.ignite.services.ServiceConfiguration setAffinityKey(java.lang.Object) ,public org.apache.ignite.services.ServiceConfiguration setCacheName(java.lang.String) ,public transient org.apache.ignite.services.ServiceConfiguration setInterceptors(org.apache.ignite.services.ServiceCallInterceptor[]) ,public org.apache.ignite.services.ServiceConfiguration setMaxPerNodeCount(int) ,public org.apache.ignite.services.ServiceConfiguration setName(java.lang.String) ,public org.apache.ignite.services.ServiceConfiguration setNodeFilter(IgnitePredicate<org.apache.ignite.cluster.ClusterNode>) ,public org.apache.ignite.services.ServiceConfiguration setService(org.apache.ignite.services.Service) ,public org.apache.ignite.services.ServiceConfiguration setStatisticsEnabled(boolean) ,public org.apache.ignite.services.ServiceConfiguration setTotalCount(int) ,public java.lang.String toString() <variables>protected java.lang.Object affKey,protected java.lang.String cacheName,protected org.apache.ignite.services.ServiceCallInterceptor[] interceptors,protected boolean isStatisticsEnabled,protected int maxPerNodeCnt,protected java.lang.String name,protected IgnitePredicate<org.apache.ignite.cluster.ClusterNode> nodeFilter,private static final long serialVersionUID,private org.apache.ignite.services.Service svc,protected int totalCnt