if (objects != null) {
                StringEntity data = new StringEntity(objects, "utf-8");
                request.setEntity(data);
            }

package sk.intersoft.vicinity.adapter.testing.service.resource;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import org.restlet.representation.Representation;
import org.restlet.resource.Get;
import org.restlet.resource.Post;
import org.restlet.resource.ServerResource;

public class DiscoResource extends ServerResource {

    public static String post() {
        try {
            HttpClient client = HttpClientBuilder.create().build();
            String callEndpoint = System.getProperty("agent.endpoint") + "/objects";
            String objects = ObjectsResource.file2string(System.getProperty("active.objects.file"));
            System.out.println("DISCO POST:");
            System.out.println("endpoint: " + callEndpoint);
            System.out.println("payload: " + objects);
            HttpPost request = new HttpPost(callEndpoint);
            request.addHeader("Content-Type", "application/json");

            HttpResponse response = client.execute(request);
            int status = response.getStatusLine().getStatusCode();
            System.out.println("POST status: " + status);
            String responseContent = EntityUtils.toString(response.getEntity());
            System.out.println("response: " + responseContent);
            return responseContent;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "failed";
    }

    @Get()
    public String disco(Representation entity) {
        try {
            System.out.println("active disco");
            String response = post();
            JSONObject out = new JSONObject();
            out.put("disco", "executed");
            try {
                out.put("response", new JSONObject(response));
            } catch (Exception e) {
                out.put("response", response);
            }
            return out.toString(2);
        } catch (Exception e) {
            return "{}";
        }
    }
}


try {
            System.out.println("active disco");
            String response = post();
            JSONObject out = new JSONObject();
            out.put("disco", "executed");
            try {
                out.put("response", new JSONObject(response));
            } catch (Exception e) {
                out.put("response", response);
            }
            return out.toString(2);
        } catch (Exception e) {
            return "{}";
        }

package sk.intersoft.vicinity.adapter.testing.service.resource;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import org.restlet.representation.Representation;
import org.restlet.resource.Get;
import org.restlet.resource.Post;
import org.restlet.resource.ServerResource;

public class DiscoResource extends ServerResource {

    public static String post() {
        try {
            HttpClient client = HttpClientBuilder.create().build();
            String callEndpoint = System.getProperty("agent.endpoint") + "/objects";
            String objects = ObjectsResource.file2string(System.getProperty("active.objects.file"));
            System.out.println("DISCO POST:");
            System.out.println("endpoint: " + callEndpoint);
            System.out.println("payload: " + objects);
            HttpPost request = new HttpPost(callEndpoint);
            request.addHeader("Content-Type", "application/json");
            if (objects != null) {
                StringEntity data = new StringEntity(objects, "utf-8");
                request.setEntity(data);
            }
            HttpResponse response = client.execute(request);
            int status = response.getStatusLine().getStatusCode();
            System.out.println("POST status: " + status);
            String responseContent = EntityUtils.toString(response.getEntity());
            System.out.println("response: " + responseContent);
            return responseContent;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "failed";
    }

    @Get()
    public String disco(Representation entity) {


package e.util;

public final class Range {

    /**
     * A unique empty range. If you use this, you might save space, but you
     * also get extra checking: it's illegal to invoke getStart or getEnd
     * on NULL_RANGE (though not on a Range that just happens to be empty).
     */
    public static final Range NULL_RANGE = new Range(-1, -1);

    private final int start;

    private final int end;

    public Range(int start, int end) {
        this.start = start;
        this.end = end;
    }

    public boolean isEmpty() {
        // This operation is allowed on NULL_RANGE.
        return (start == end);
    }

    public boolean isNonEmpty() {
        // This operation is allowed on NULL_RANGE.
        return (start != end);
    }

    public int getStart() {
        checkNotNull();
        return start;
    }

{
        checkNotNull();
        return end;
    }

    public int length() {
        checkNotNull();
        return (end - start);
    }

    private void checkNotNull() {
        if (this == NULL_RANGE) {
            throw new IllegalStateException("can't use NULL_RANGE");
        }
    }

    public String toString() {
        if (this == NULL_RANGE) {
            return "Range[NULL_RANGE]";
        }
        return "Range[start=" + start + ",end=" + end + "]";
    }
}


{
        checkNotNull();
        return (end - start);
    }

package e.util;

public final class Range {

    /**
     * A unique empty range. If you use this, you might save space, but you
     * also get extra checking: it's illegal to invoke getStart or getEnd
     * on NULL_RANGE (though not on a Range that just happens to be empty).
     */
    public static final Range NULL_RANGE = new Range(-1, -1);

    private final int start;

    private final int end;

    public Range(int start, int end) {
        this.start = start;
        this.end = end;
    }

    public boolean isEmpty() {
        // This operation is allowed on NULL_RANGE.
        return (start == end);
    }

    public boolean isNonEmpty() {
        // This operation is allowed on NULL_RANGE.
        return (start != end);
    }

    public int getStart() {
        checkNotNull();
        return start;
    }

    public int getEnd() {
        checkNotNull();
        return end;
    }

    public int length()

    private void checkNotNull() {
        if (this == NULL_RANGE) {
            throw new IllegalStateException("can't use NULL_RANGE");
        }
    }

    public String toString() {
        if (this == NULL_RANGE) {
            return "Range[NULL_RANGE]";
        }
        return "Range[start=" + start + ",end=" + end + "]";
    }
}


package e.util;

public final class Range {

    /**
     * A unique empty range. If you use this, you might save space, but you
     * also get extra checking: it's illegal to invoke getStart or getEnd
     * on NULL_RANGE (though not on a Range that just happens to be empty).
     */
    public static final Range NULL_RANGE = new Range(-1, -1);

    private final int start;

    private final int end;

    public Range(int start, int end) {
        this.start = start;
        this.end = end;
    }

    public boolean isEmpty() {
        // This operation is allowed on NULL_RANGE.
        ret

    }

    public boolean isNonEmpty() {
        // This operation is allowed on NULL_RANGE.
        return (start != end);
    }

    public int getStart() {
        checkNotNull();
        return start;
    }

    public int getEnd() {
        checkNotNull();
        return end;
    }

    public int length() {
        checkNotNull();
        return (end - start);
    }

    private void checkNotNull() {
        if (this == NULL_RANGE) {
            throw new IllegalStateException("can't use NULL_RANGE");
        }
    }

    public String toString() {
        if (this == NULL_RANGE) {
            return "Range[NULL_RANGE]";
        }
        return "Range[start=" + start + ",end=" + end + "]";
    }
}


if (this == NULL_RANGE) {
            throw new IllegalStateException("can't use NULL_RANGE");
        }

package e.util;

public final class Range {

    /**
     * A unique empty range. If you use this, you might save space, but you
     * also get extra checking: it's illegal to invoke getStart or getEnd
     * on NULL_RANGE (though not on a Range that just happens to be empty).
     */
    public static final Range NULL_RANGE = new Range(-1, -1);

    private final int start;

    private final int end;

    public Range(int start, int end) {
        this.start = start;
        this.end = end;
    }

    public boolean isEmpty() {
        // This operation is allowed on NULL_RANGE.
        return (start == end);
    }

    public boolean isNonEmpty() {
        // This operation is allowed on NULL_RANGE.
        return (start != end);
    }

    public int getStart() {
        checkNotNull();
        return start;
    }

    public int getEnd() {
        checkNotNull();
        return end;
    }

    public int length() {
        checkNotNull();
        return (end - start);
    }

    private void checkNotNull() {

    }

    public String toString() {
        if (this == NULL_RANGE) {
            return "Range[NULL_RANGE]";
        }
        return "Range[start=" + start + ",end=" + end + "]";
    }
}


package fi.jumi.core.discovery;

import fi.jumi.actors.ActorRef;
import fi.jumi.core.api.TestFile;
import fi.jumi.core.util.Boilerplate;
import javax.annotation.concurrent.NotThreadSafe;
import java.io.IOException;
import java.nio.file.*;

@NotThreadSafe
public class PathMatcherTestFileFinder implements TestFileFinder {

    private final PathMatcher matcher;

    private final Path baseDir;

    public PathMatcherTestFileFinder(PathMatcher matcher, Path baseDir) {
        this.matcher = matcher;
        this.baseDir = baseDir;
    }

    @Override
    public void findTestFiles(ActorRef<TestFileFinderListener> listener) {
        try {
            // TODO: Java 8, use Files.walk
            Files.walkFileTree(baseDir, new RelativePathMatchingFileVisitor(matcher, baseDir) {

                @Override
                protected void fileFound(Path relativePath) {
                    // XXX: This class must not call onAllTestFilesFound, but only CompositeTestFileFinder does, to avoid duplicate calls
                    listener.tell().onTestFileFound(TestFile.fromPath(relativePath));
                }
            });
        } catch (IOException e) {
            throw new RuntimeException("Failed to traverse " + baseDir, e);
        } finally {
            listener.tell().onAllTestFilesFound();
        }
    }

{
        return Boilerplate.toString(getClass(), matcher, baseDir);
    }
}


{
        return Boilerplate.toString(getClass(), matcher, baseDir);
    }

package fi.jumi.core.discovery;

import fi.jumi.actors.ActorRef;
import fi.jumi.core.api.TestFile;
import fi.jumi.core.util.Boilerplate;
import javax.annotation.concurrent.NotThreadSafe;
import java.io.IOException;
import java.nio.file.*;

@NotThreadSafe
public class PathMatcherTestFileFinder implements TestFileFinder {

    private final PathMatcher matcher;

    private final Path baseDir;

    public PathMatcherTestFileFinder(PathMatcher matcher, Path baseDir) {
        this.matcher = matcher;
        this.baseDir = baseDir;
    }

    @Override
    public void findTestFiles(ActorRef<TestFileFinderListener> listener) {
        try {
            // TODO: Java 8, use Files.walk
            Files.walkFileTree(baseDir, new RelativePathMatchingFileVisitor(matcher, baseDir) {

                @Override
                protected void fileFound(Path relativePath) {
                    // XXX: This class must not call onAllTestFilesFound, but only CompositeTestFileFinder does, to avoid duplicate calls
                    listener.tell().onTestFileFound(TestFile.fromPath(relativePath));
                }
            });
        } catch (IOException e) {
            throw new RuntimeException("Failed to traverse " + baseDir, e);
        } finally {
            listener.tell().onAllTestFilesFound();
        }
    }

    @Override
    public String toString()


package fi.jumi.core.discovery;

import fi.jumi.actors.ActorRef;
import fi.jumi.core.api.TestFile;
import fi.jumi.core.util.Boilerplate;
import javax.annotation.concurrent.NotThreadSafe;
import java.io.IOException;
import java.nio.file.*;

@NotThreadSafe
public class PathMatcherTestFileFinder implements TestFileFinder {

    private final PathMatcher matcher;

    private final Path baseDir;

    public PathMatcherTestFileFinder(PathMatcher matcher, Path baseDir) {
        this.matcher = matcher;
        this.baseDir = baseDir;
    }

    @Override
    public void findTestFiles(ActorRef<TestFileFinderListener> listener) {

        try {
            // TODO: Java 8, use Files.walk
            Files.walkFileTree(baseDir, new RelativePathMatchingFileVisitor(matcher, baseDir) {

                @Override
                protected void fileFound(Path relativePath) {
                    // XXX: This class must not call onAllTestFilesFound, but only CompositeTestFileFinder does, to avoid duplicate calls
                    listener.tell().onTestFileFound(TestFile.fromPath(relativePath));
                }
            });
        } catch (IOException e) {
            throw new RuntimeException("Failed to traverse " + baseDir, e);
        } finally {
            listener.tell().onAllTestFilesFound();
        }
    }

    @Override
    public String toString() {
        return Boilerplate.toString(getClass(), matcher, baseDir);
    }
}


try {
            // TODO: Java 8, use Files.walk
            Files.walkFileTree(baseDir, new RelativePathMatchingFileVisitor(matcher, baseDir) {

                @Override
                protected void fileFound(Path relativePath) {
                    // XXX: This class must not call onAllTestFilesFound, but only CompositeTestFileFinder does, to avoid duplicate calls
                    listener.tell().onTestFileFound(TestFile.fromPath(relativePath));
                }
            });
        } catch (IOException e) {
            throw new RuntimeException("Failed to traverse " + baseDir, e);
        } finally {
            listener.tell().onAllTestFilesFound();
        }

    }

    @Override
    public String toString() {
        return Boilerplate.toString(getClass(), matcher, baseDir);
    }
}


package fi.jumi.core.discovery;

import fi.jumi.actors.ActorRef;
import fi.jumi.core.api.TestFile;
import fi.jumi.core.util.Boilerplate;
import javax.annotation.concurrent.NotThreadSafe;
import java.io.IOException;
import java.nio.file.*;

@NotThreadSafe
public class PathMatcherTestFileFinder implements TestFileFinder {

    private final PathMatcher matcher;

    private final Path baseDir;

    public PathMatcherTestFileFinder(PathMatcher matcher, Path baseDir) {
        this.matcher = matcher;
        this.baseDir = baseDir;
    }

    @Override
    public void findTestFiles(ActorRef<TestFileFinderListener> listener) {
        try {
            // TODO: Java 8, use Files.walk
            Files.walkFileTree(baseDir, new RelativePathMatchingFileVisitor(matcher, baseDir) {

                @Override
                protected void fileFound(Path relativePath) {
                    // XXX: This class must not call onAllTestFilesFound, but only CompositeTestFileFinder does, to avoid duplicate calls
                    listener.tell().onTestFileFound(TestFile.fromPath(relativePath));
                }
            });
        } catch (IOException e) {
            throw new RuntimeException("Failed to traverse " + baseDir, e);
        } finally {
            listener.tell().onAllTestFilesFound();
        }

    @Override
    public String toString() {
        return Boilerplate.toString(getClass(), matcher, baseDir);
    }
}


package fi.jumi.core.discovery;

import fi.jumi.actors.ActorRef;
import fi.jumi.core.api.TestFile;
import fi.jumi.core.util.Boilerplate;
import javax.annotation.concurrent.NotThreadSafe;
import java.io.IOException;
import java.nio.file.*;

@NotThreadSafe
public class PathMatcherTestFileFinder implements TestFileFinder {

    private final PathMatcher matcher;

    private final Path baseDir;

    public PathMatcherTestFileFinder(PathMatcher matcher, Path baseDir) {
        this.matcher = matcher;
        this.baseDir = baseDir;
    }

    @Override
    public void findTestFiles(ActorRef<TestFileFinderListener> listener) {
        try {
            // TODO: Java 8, use Files.walk
            Files.walkFileTree(baseDir, new RelativePathMatchingFileVisitor(matcher, baseDir) {

                @Override
                protected void fileFound(Path relativePath) {
                    // XXX: This class must not call onAllTestFilesFound, but only CompositeTestFileFinder does, to avoid duplicate calls
                    listener.tell().onTestFileFound(TestFile.fromPath(relativePath));
                }
            });
        } catch (IOException e) {
            throw new RuntimeException("Failed to traverse " + baseDir, e);
        } finally {
            listener.tell().onAllTestFilesFound();
        }
    }

    @Override
    public String toString() {
        return Boilerplate.toString(getClass(), matcher, bas


public static String resolveVariables(String text, Properties props)

package org.keycloak.theme;

import java.util.Properties;

/**
 * @author Marko Strukelj
 */
public class TemplatingUtil {

{
        return resolveVariables(text, props, "${", "}");
    }

    public static String resolveVariables(String text, Properties props, String startMarker, String endMarker) {
        int e = 0;
        int s = text.indexOf(startMarker);
        if (s == -1) {
            return text;
        } else {
            StringBuilder sb = new StringBuilder();
            do {
                if (e < s) {
                    sb.append(text.substring(e, s));
                }
                e = text.indexOf(endMarker, s + startMarker.length());
                if (e != -1) {
                    String key = text.substring(s + startMarker.length(), e);
                    sb.append(props.getProperty(key, key));
                    e += endMarker.length();
                    s = text.indexOf(startMarker, e);
                } else {
                    e = s;
                    break;
                }
            } while (s != -1);
            if (e < text.length()) {
                sb.append(text.substring(e));
            }
            return sb.toString();
        }
    }
}


{
        return resolveVariables(text, props, "${", "}");
    }

package org.keycloak.theme;

import java.util.Properties;

/**
 * @author Marko Strukelj
 */
public class TemplatingUtil {

    public static String resolveVariables(String text, Properties props)

    public static String resolveVariables(String text, Properties props, String startMarker, String endMarker) {
        int e = 0;
        int s = text.indexOf(startMarker);
        if (s == -1) {
            return text;
        } else {
            StringBuilder sb = new StringBuilder();
            do {
                if (e < s) {
                    sb.append(text.substring(e, s));
                }
                e = text.indexOf(endMarker, s + startMarker.length());
                if (e != -1) {
                    String key = text.substring(s + startMarker.length(), e);
                    sb.append(props.getProperty(key, key));
                    e += endMarker.length();
                    s = text.indexOf(startMarker, e);
                } else {
                    e = s;
                    break;
                }
            } while (s != -1);
            if (e < text.length()) {
                sb.append(text.substring(e));
            }
            return sb.toString();
        }
    }
}


package org.keycloak.theme;

import java.util.Properties;

/**
 * @author Marko Strukelj
 */
public class TemplatingUtil {

    public static String resolveVariables(String text, Properties props) {
        return resolveVariables(text, props, "${", "}");
    }

    public static String resolveVariables(String text, Properties props, String startMarker, String endMarker) {

        int s = text.indexOf(startMarker);
        if (s == -1) {
            return text;
        } else {
            StringBuilder sb = new StringBuilder();
            do {
                if (e < s) {
                    sb.append(text.substring(e, s));
                }
                e = text.indexOf(endMarker, s + startMarker.length());
                if (e != -1) {
                    String key = text.substring(s + startMarker.length(), e);
                    sb.append(props.getProperty(key, key));
                    e += endMarker.length();
                    s = text.indexOf(startMarker, e);
                } else {
                    e = s;
                    break;
                }
            } while (s != -1);
            if (e < text.length()) {
                sb.append(text.substring(e));
            }
            return sb.toString();
        }
    }
}


package org.keycloak.theme;

import java.util.Properties;

/**
 * @author Marko Strukelj
 */
public class TemplatingUtil {

    public static String resolveVariables(String text, Properties props) {
        return resolveVariables(text, props, "${", "}");
    }

    public static String resolveVariables(String text, Properties props, String startMarker, String endMarker) {
        int e = 0;

        if (s == -1) {
            return text;
        } else {
            StringBuilder sb = new StringBuilder();
            do {
                if (e < s) {
                    sb.append(text.substring(e, s));
                }
                e = text.indexOf(endMarker, s + startMarker.length());
                if (e != -1) {
                    String key = text.substring(s + startMarker.length(), e);
                    sb.append(props.getProperty(key, key));
                    e += endMarker.length();
                    s = text.indexOf(startMarker, e);
                } else {
                    e = s;
                    break;
                }
            } while (s != -1);
            if (e < text.length()) {
                sb.append(text.substring(e));
            }
            return sb.toString();
        }
    }
}


if (s == -1) {
            return text;
        } else {
            StringBuilder sb = new StringBuilder();
            do {
                if (e < s) {
                    sb.append(text.substring(e, s));
                }
                e = text.indexOf(endMarker, s + startMarker.length());
                if (e != -1) {
                    String key = text.substring(s + startMarker.length(), e);
                    sb.append(props.getProperty(key, key));
                    e += endMarker.length();
                    s = text.indexOf(startMarker, e);
                } else {
                    e = s;
                    break;
                }
            } while (s != -1);
            if (e < text.length()) {
                sb.append(text.substring(e));
            }
            return sb.toString();
        }
    }

package org.keycloak.theme;

import java.util.Properties;

/**
 * @author Marko Strukelj
 */
public class TemplatingUtil {

    public static String resolveVariables(String text, Properties props) {
        return resolveVariables(text, props, "${", "}");
    }

    public static String resolveVariables(String text, Properties props, String startMarker, String endMarker) {
        int e = 0;
        int s = text.indexOf(startMarker);


package org.keycloak.theme;

import java.util.Properties;

/**
 * @author Marko Strukelj
 */
public class TemplatingUtil {

    public static String resolveVariables(String text, Properties props) {
        return resolveVariabl

    }

    public static String resolveVariables(String text, Properties props, String startMarker, String endMarker) {
        int e = 0;
        int s = text.indexOf(startMarker);
        if (s == -1) {
            return text;
        } else {
            StringBuilder sb = new StringBuilder();
            do {
                if (e < s) {
                    sb.append(text.substring(e, s));
                }
                e = text.indexOf(endMarker, s + startMarker.length());
                if (e != -1) {
                    String key = text.substring(s + startMarker.length(), e);
                    sb.append(props.getProperty(key, key));
                    e += endMarker.length();
                    s = text.indexOf(startMarker, e);
                } else {
                    e = s;
                    break;
                }
            } while (s != -1);
            if (e < text.length()) {
                sb.append(text.substring(e));
            }
            return sb.toString();
        }
    }
}


if (e != -1) {
                    String key = text.substring(s + startMarker.length(), e);
                    sb.append(props.getProperty(key, key));
                    e += endMarker.length();
                    s = text.indexOf(startMarker, e);
                } else {
                    e = s;
                    break;
                }

package org.keycloak.theme;

import java.util.Properties;

/**
 * @author Marko Strukelj
 */
public class TemplatingUtil {

    public static String resolveVariables(String text, Properties props) {
        return resolveVariables(text, props, "${", "}");
    }

    public static String resolveVariables(String text, Properties props, String startMarker, String endMarker) {
        int e = 0;
        int s = text.indexOf(startMarker);
        if (s == -1) {
            return text;
        } else {
            StringBuilder sb = new StringBuilder();
            do {
                if (e < s) {
                    sb.append(text.substring(e, s));
                }
                e = text.indexOf(endMarker, s + startMarker.length());

            } while (s != -1);
            if (e < text.length()) {
                sb.append(text.substring(e));
            }
            return sb.toString();
        }
    }
}


/*
 * JBoss, Home of Professional Open Source
 * full listing of individual contributors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://example.com
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package jakarta.enterprise.inject.spi;

/**
 *

 * The container fires an event of this type for every Java EE component class supporting injection that may be instantiated by
 * the container at runtime, including every managed bean declared using {@code jakarta.annotation.ManagedBean}, EJB session or
 * message-driven bean, enabled bean, enabled interceptor or enabled decorator.
 *

 *

 * Any observer of this event is permitted to wrap and/or replace the {@link InjectionTarget}. The
 * container must use the final value of this property, after all observers have been called, whenever it performs injection
 * upon the managed bean, session bean or other Java EE component class supporting injection.
 *

 *

 * For example, this observer decorates the {@code InjectionTarget} for all servlets.
 *

 *
 *

 * public <T extends Servlet> void decorateServlet(@Observes ProcessInjectionTarget<T> pit) {
 *     pit.setInjectionTarget(decorate(pit.getInjectionTarget()));
 * }
 *

 *

 * If any observer method of a {@code ProcessInjectionTarget} event throws an exception, the exception is treated as a
 * definition error by the container.
 *

 *
 * @see InjectionTarget
 * @author David Allen
 * @param <X> The managed bean class, session bean class or Java EE component class supporting injection
 */
public interface ProcessInjectionTarget<X> {

    /**
     * Returns the {@link AnnotatedType} representing the managed bean class, session bean class or
     * other Java EE component class supporting injection.
     *
     * @return the {@link AnnotatedType} of the bean with an injection target
     * @throws IllegalStateException if called outside of the observer method invocation
     */

    /**
     * Returns the {@link InjectionTarget} object that will be used by the container to perform
     * injection.
     *
     * @return the {@link InjectionTarget} object which performs the injection
     * @throws IllegalStateException if called outside of the observer method invocation
     */
    public InjectionTarget<X> getInjectionTarget();

    /**
     * Replaces the {@link InjectionTarget} which performs injection for this target.
     *
     * @param injectionTarget The new {@link InjectionTarget} to use
     * @throws IllegalStateException if called outside of the observer method invocation
     */
    public void setInjectionTarget(InjectionTarget<X> injectionTarget);

    /**
     * Registers a definition error with the container, causing the container to abort deployment after bean discovery is
     * complete.
     *
     * @param t A {@link java.lang.Throwable} representing the definition error
     * @throws IllegalStateException if called outside of the observer method invocation
     */
    public void addDefinitionError(Throwable t);
}


private long tillNextMillis(final long lastTimestamp)

/**
 * Tencent is pleased to support the open source community by making TubeMQ available.
 *

 *

 */
package com.tencent.tubemq.server.common.utils;

/**
 * 来自于twitter项目snowflake的id产生方案，全局唯一，时间有序
 * http://example.com
 */
public class IdWorker {

    private static final long twepoch = 1350282310830L;

    private static final long workerIdBits = 10L;

    private static final long maxWorkerId = -1L ^ -1L << workerIdBits;

    private static final long sequenceBits = 12L;

    private static final long workerIdShift = sequenceBits;

    private static final long timestampLeftShift = sequenceBits + workerIdBits;

    private static final long sequenceMask = -1L ^ -1L << sequenceBits;

    private final long workerId;

    private long sequence = 0L;

    private long lastTimestamp = -1L;

    public IdWorker(final long workerId) {
        if (workerId > maxWorkerId || workerId < 0) {
            throw new IllegalArgumentException(String.format("worker Id required in range [%d , 0]", maxWorkerId));
        }
        this.workerId = workerId;
    }

    public synchronized long nextId() {
        long timestamp = System.nanoTime();
        if (this.lastTimestamp == timestamp) {
            this.sequence = this.sequence + 1 & sequenceMask;
            if (this.sequence == 0) {
                timestamp = this.tillNextMillis(this.lastTimestamp);
            }
        } else {
            this.sequence = 0;
        }
        this.lastTimestamp = timestamp;
        return Math.abs(timestamp - twepoch << timestampLeftShift | this.workerId << workerIdShift | this.sequence);
    }

{
        long timestamp = System.nanoTime();
        while (timestamp <= lastTimestamp) {
            timestamp = System.nanoTime();
        }
        return timestamp;
    }
}


{
        long timestamp = System.nanoTime();
        while (timestamp <= lastTimestamp) {
            timestamp = System.nanoTime();
        }
        return timestamp;
    }

/**
 * Tencent is pleased to support the open source community by making TubeMQ available.
 *

 *

 */
package com.tencent.tubemq.server.common.utils;

/**
 * 来自于twitter项目snowflake的id产生方案，全局唯一，时间有序
 * http://example.com
 */
public class IdWorker {

    private static final long twepoch = 1350282310830L;

    private static final long workerIdBits = 10L;

    private static final long maxWorkerId = -1L ^ -1L << workerIdBits;

    private static final long sequenceBits = 12L;

    private static final long workerIdShift = sequenceBits;

    private static final long timestampLeftShift = sequenceBits + workerIdBits;

    private static final long sequenceMask = -1L ^ -1L << sequenceBits;

    private final long workerId;

    private long sequence = 0L;

    private long lastTimestamp = -1L;

    public IdWorker(final long workerId) {
        if (workerId > maxWorkerId || workerId < 0) {
            throw new IllegalArgumentException(String.format("worker Id required in range [%d , 0]", maxWorkerId));
        }
        this.workerId = workerId;
    }

    public synchronized long nextId() {
        long timestamp = System.nanoTime();
        if (this.lastTimestamp == timestamp) {
            this.sequence = this.sequence + 1 & sequenceMask;
            if (this.sequence == 0) {
                timestamp = this.tillNextMillis(this.lastTimestamp);
            }
        } else {
            this.sequence = 0;
        }
        this.lastTimestamp = timestamp;
        return Math.abs(timestamp - twepoch << timestampLeftShift | this.workerId << workerIdShift | this.sequence);
    }

    private long tillNextMillis(final long lastTimestamp)


/**
 * Tencent is pleased to support the open source community by making TubeMQ available.
 *

 *

 */
package com.tencent.tubemq.server.common.utils;

/**
 * 来自于twitter项目snowflake的id产生方案，全局唯一，时间有序
 * http://example.com
 */
public class IdWorker {

    private static final long twepoch = 1350282310830L;

    private static final long workerIdBits = 10L;

    private static final long maxWorkerId = -1L ^ -1L << workerIdBits;

    private static final long sequenceBits = 12L;

    private static final long workerIdShift = sequenceBits;

    private static final long timestampLeftShift = sequenceBits + workerIdBits;

    private static final long sequenceMask = -1L ^ -1L << sequenceBits;

    private final long workerId;

    private long sequence = 0L;

    private long lastTimestamp = -1L;

    public IdWorker(final long workerId) {
        if (workerId > maxWorkerId || workerId < 0) {
            throw new IllegalArgumentException(String.format("worker Id required in range [%d , 0]", maxWorkerId));
        }
        this.workerId = workerId;
    }

    public synchronized long nextId() {
        long timestamp = System.nanoTime();
        if (this.lastTimestamp == timestamp) {
            this.sequence = this.sequence + 1 & sequenceMask;
            if (this.sequence == 0) {
                timestamp = this.tillNextMillis(this.lastTimestamp);
            }
        } else {
            this.sequence = 0;
        }
        this.lastTimestamp = timestamp;
        return Math.abs(timestamp - twepoch << timestampLeftShift | this.workerId << workerIdShift | this.sequence);
    }

    private long tillNextMillis(final long lastTimestamp) {

        while (timestamp <= lastTimestamp) {
            timestamp = System.nanoTime();
        }
        return timestamp;
    }
}


while (timestamp <= lastTimestamp) {
            timestamp = System.nanoTime();
        }

/**
 * Tencent is pleased to support the open source community by making TubeMQ available.
 *

 *

 */
package com.tencent.tubemq.server.common.utils;

/**
 * 来自于twitter项目snowflake的id产生方案，全局唯一，时间有序
 * http://example.com
 */
public class IdWorker {

    private static final long twepoch = 1350282310830L;

    private static final long workerIdBits = 10L;

    private static final long maxWorkerId = -1L ^ -1L << workerIdBits;

    private static final long sequenceBits = 12L;

    private static final long workerIdShift = sequenceBits;

    private static final long timestampLeftShift = sequenceBits + workerIdBits;

    private static final long sequenceMask = -1L ^ -1L << sequenceBits;

    private final long workerId;

    private long sequence = 0L;

    private long lastTimestamp = -1L;

    public IdWorker(final long workerId) {
        if (workerId > maxWorkerId || workerId < 0) {
            throw new IllegalArgumentException(String.format("worker Id required in range [%d , 0]", maxWorkerId));
        }
        this.workerId = workerId;
    }

    public synchronized long nextId() {
        long timestamp = System.nanoTime();
        if (this.lastTimestamp == timestamp) {
            this.sequence = this.sequence + 1 & sequenceMask;
            if (this.sequence == 0) {
                timestamp = this.tillNextMillis(this.lastTimestamp);
            }
        } else {
            this.sequence = 0;
        }
        this.lastTimestamp = timestamp;
        return Math.abs(timestamp - twepoch << timestampLeftShift | this.workerId << workerIdShift | this.sequence);
    }

    private long tillNextMillis(final long lastTimestamp) {
        long timestamp = System.nanoTime();


/**
 * Tencent is pleased to support the open source community by making TubeMQ available.
 *

 *

 */
package com.tencent.tubemq.server.common.utils;

/**
 * 来自于twitter项目snowflake的id产生方案，全局唯一，时间有序
 * http://example.com
 */
public class IdWorker {

    private static final long twepoch = 1350282310830L;

    private static final long workerIdBits = 10L;

    private static final long maxWorkerId = -1L ^ -1L << workerIdBits;

    private static final long sequenceBits = 12L;

    private static final long workerIdShift = sequenceBits;

    private static final long timestampLeftShift = sequenceBits + workerIdBits;

    private static final long sequenceMask = -1L ^ -1L << sequenceBits;

    private final long workerId;

    private long sequence = 0L;

    private long lastTimestamp = -1L;

    public IdWorker(final long workerId) {
        if (workerId > maxWorkerId || workerId < 0) {
            throw new IllegalArgumentException(String.format("worker Id required in range [%d , 0]", maxWorkerId));
        }
        this.workerId = workerId;
    }

    public synchronized long nextId() {
        long timestamp = System.nanoTime();
        if (this.lastTimestamp == timestamp) {
            this.sequence = this.sequence + 1 & sequenceMask;
            if (this.sequence == 0) {
                timestamp = this.tillNextMillis(this.lastTimestamp);
            }
        } else {
            this.sequence = 0;
        }
        this.lastTimestamp = timestamp;
        return Math.abs(timestamp - twepoch << timestampLeftShift | this.workerId << workerIdShift | this.sequence);
    }

    private long tillNextMillis(final long lastTimestamp) {
        long timestamp = System.nanoTime();
        while (timestamp <= lastTimestamp) {
            timestamp = System.nanoTime();
        }


/**
 * Tencent is pleased to support the open source community by making TubeMQ available.
 *

 *

 */
package com.tencent.tubemq.server.common.utils;

/**
 * 来自于twitter项目snowflake的id产生方案，全局唯一，时间有序
 * http://example.com
 */
public class IdWorker {

    private static final long twepoch = 1350282310830L;

    private static final long workerIdBits = 10L;

    private static final long maxWorkerId = -1L ^ -1L << workerIdBits;

    private static final long sequenceBits = 12L;

    private static final long workerIdShift = sequenceBits;

    private static final long timestampLeftShift = sequenceBits + workerIdBits;

    private static final long sequenceMask = -1L ^ -1L << sequenceBits;

    private final long workerId;

    private long sequence = 0L;

    private long lastTimestamp = -1L;

    public IdWorker(final long workerId) {
        if (workerId > maxWorkerId || workerId < 0) {
            throw new IllegalArgumentException(String.format("worker Id required in range [%d , 0]", maxWorkerId));
        }
        this.workerId = workerId;
    }

    public synchronized long nextId() {
        long t

        if (this.lastTimestamp == timestamp) {
            this.sequence = this.sequence + 1 & sequenceMask;
            if (this.sequence == 0) {
                timestamp = this.tillNextMillis(this.lastTimestamp);
            }
        } else {
            this.sequence = 0;
        }
        this.lastTimestamp = timestamp;
        return Math.abs(timestamp - twepoch << timestampLeftShift | this.workerId << workerIdShift | this.sequence);
    }

    private long tillNextMillis(final long lastTimestamp) {
        long timestamp = System.nanoTime();
        while (timestamp <= lastTimestamp) {
            timestamp = System.nanoTime();
        }
        return timestamp;
    }
}


if (workerId > maxWorkerId || workerId < 0) {
            throw new IllegalArgumentException(String.format("worker Id required in range [%d , 0]", maxWorkerId));
        }

/**
 * Tencent is pleased to support the open source community by making TubeMQ available.
 *

 *

 */
package com.tencent.tubemq.server.common.utils;

/**
 * 来自于twitter项目snowflake的id产生方案，全局唯一，时间有序
 * http://example.com
 */
public class IdWorker {

    private static final long twepoch = 1350282310830L;

    private static final long workerIdBits = 10L;

    private static final long maxWorkerId = -1L ^ -1L << workerIdBits;

    private static final long sequenceBits = 12L;

    private static final long workerIdShift = sequenceBits;

    private static final long timestampLeftShift = sequenceBits + workerIdBits;

    private static final long sequenceMask = -1L ^ -1L << sequenceBits;

    private final long workerId;

    private long sequence = 0L;

    private long lastTimestamp = -1L;

    public IdWorker(final long workerId) {

        this.workerId = workerId;
    }

    public synchronized long nextId() {
        long timestamp = System.nanoTime();
        if (this.lastTimestamp == timestamp) {
            this.sequence = this.sequence + 1 & sequenceMask;
            if (this.sequence == 0) {
                timestamp = this.tillNextMillis(this.lastTimestamp);
            }
        } else {
            this.sequence = 0;
        }
        this.lastTimestamp = timestamp;
        return Math.abs(timestamp - twepoch << timestampLeftShift | this.workerId << workerIdShift | this.sequence);
    }

    private long tillNextMillis(final long lastTimestamp) {
        long timestamp = System.nanoTime();
        while (timestamp <= lastTimestamp) {
            timestamp = System.nanoTime();
        }
        return timestamp;
    }
}


public Db_stmt_arg_list Crt_str_by_bry(String key, byte[] val)

/*
XOWA: the XOWA Offline Wiki Application

The terms of each license can be found in the source code repository:

*/
package gplx.dbs.stmts;

import gplx.*;
import gplx.dbs.*;

public class Db_stmt_arg_list {

    private final List_adp list = List_adp_.New();

    public void Clear() {
        list.Clear();
    }

    public int Len() {
        return list.Len();
    }

    public Db_stmt_arg Get_at(int i) {
        return (Db_stmt_arg) list.Get_at(i);
    }

    public Db_stmt_arg_list Crt_int(String key, int val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__int, key, val);
    }

{
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, String_.new_u8(val));
    }

    public Db_stmt_arg_list Crt_str(String key, String val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, val);
    }

    public Db_stmt_arg_list Add(boolean crt, int tid, String key, Object val) {
        list.Add(new Db_stmt_arg(crt, tid, key, val));
        return this;
    }

    public void Fill(Db_stmt stmt) {
        int len = list.Len();
        for (int i = 0; i < len; ++i) {
            Db_stmt_arg arg = (Db_stmt_arg) list.Get_at(i);
            if (arg.Crt)
                Fill_crt(stmt, arg.Tid, arg.Key, arg.Val);
            else
                Fill_val(stmt, arg.Tid, arg.Key, arg.Val);
        }
        list.Clear();
    }

    public static void Fill_crt(Db_stmt stmt, int tid, String key, Object val) {
        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Crt_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Crt_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Crt_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Crt_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Crt_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Crt_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Crt_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Crt_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Crt_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }
    }

    public static void Fill_val(Db_stmt stmt, int tid, String key, Object val) {
        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Val_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Val_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Val_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Val_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Val_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Val_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Val_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Val_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Val_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }
    }
}


{
        return (Db_stmt_arg) list.Get_at(i);
    }

/*
XOWA: the XOWA Offline Wiki Application

The terms of each license can be found in the source code repository:

*/
package gplx.dbs.stmts;

import gplx.*;
import gplx.dbs.*;

public class Db_stmt_arg_list {

    private final List_adp list = List_adp_.New();

    public void Clear() {
        list.Clear();
    }

    public int Len() {
        return list.Len();
    }

    public Db_stmt_arg Get_at(int i)

    public Db_stmt_arg_list Crt_int(String key, int val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__int, key, val);
    }

    public Db_stmt_arg_list Crt_str_by_bry(String key, byte[] val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, String_.new_u8(val));
    }

    public Db_stmt_arg_list Crt_str(String key, String val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, val);
    }

    public Db_stmt_arg_list Add(boolean crt, int tid, String key, Object val) {
        list.Add(new Db_stmt_arg(crt, tid, key, val));
        return this;
    }

    public void Fill(Db_stmt stmt) {
        int len = list.Len();
        for (int i = 0; i < len; ++i) {
            Db_stmt_arg arg = (Db_stmt_arg) list.Get_at(i);
            if (arg.Crt)
                Fill_crt(stmt, arg.Tid, arg.Key, arg.Val);
            else
                Fill_val(stmt, arg.Tid, arg.Key, arg.Val);
        }
        list.Clear();
    }

    public static void Fill_crt(Db_stmt stmt, int tid, String key, Object val) {
        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Crt_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Crt_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Crt_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Crt_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Crt_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Crt_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Crt_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Crt_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Crt_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }
    }

    public static void Fill_val(Db_stmt stmt, int tid, String key, Object val) {
        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Val_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Val_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Val_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Val_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Val_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Val_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Val_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Val_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Val_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }
    }
}


/*
XOWA: the XOWA Offline Wiki Application

The terms of each license can be found in the source code repository:

*/
package gplx.dbs.stmts;

import gplx.*;
import gplx.dbs.*;

public class Db_stmt_arg_list {

    private final List_adp list = List_adp_.New();

    public void Clear() {
        list.Clear();
    }

    public int Len() {
        return list.Len();
    }

    public Db_stmt_arg Get_at(int i) {
        return (Db_stmt_arg) list.Get_at(i);
    }

    public Db_stmt_arg_list Crt_int(String key, int val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__int, key, val);
    }

    public Db_stmt_arg_list Crt_str_by_bry(String key, byte[] val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, String_.new_u8(val));
    }

    public Db_stmt_arg_list Crt_str(String key, String val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, val);
    }

    public Db_stmt_arg_list Add(boolean crt, int tid, String key, Object val) {
        list.Add(new Db_stmt_arg(crt, tid, key, val));
        return this;
    }

    public void Fill(Db_stmt stmt) {
        int len = list.Len();
        for (int i = 0; i < len; ++i) {
            Db_stmt_arg arg = (Db_stmt_arg) list.Get_at(i);
            if (arg.Crt)
                Fill_crt(stmt, arg.Tid, arg.Key, arg.Val);
            else
                Fill_val(stmt, arg.Tid, arg.Key, arg.Val);
        }
        list.Clear();
    }

    public static void Fill_crt(Db_stmt stmt, int tid, String key, Object val) {
        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Crt_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Crt_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Crt_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Crt_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Crt_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Crt_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Crt_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Crt_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Crt_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }
    }

    public static void Fill_val(Db_stmt stmt, int tid, String key, Object val) {

        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Val_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Val_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Val_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Val_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Val_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Val_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Val_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Val_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Val_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }
    }
}


switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Val_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Val_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Val_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Val_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Val_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Val_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Val_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Val_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Val_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }


/*
XOWA: the XOWA Offline Wiki Application

The terms of each license can be found in the source code repository:

*/
package gplx.dbs.stmts;

import gplx.*;
import gplx.dbs.*;

public class Db_stmt_arg_list {

    private final List_adp list = List_adp_.New();

    public void Clear() {
        list.Clear();
    }

    public int Len() {
        return list.Len();
    }

    public Db_stmt_arg Get_at(int i) {
        return (Db_stmt_arg) list.Get_at(i);
    }

    public Db_stmt_arg_list Crt_int(String key, int val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__int, key, val);
    }

    public Db_stmt_arg_list Crt_str_by_bry(String key, byte[] val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, String_.new_u8(val));
    }

    public Db_stmt_arg_list Crt_str(String key, String val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, val);
    }

    public Db_stmt_arg_list Add(boolean crt, int tid, String key, Object val) {
        list.Add(new Db_stmt_arg(crt, tid, key, val));
        return this;
    }

    public void Fill(Db_stmt stmt) {
        int len = list.Len();
        for (int i = 0; i < len; ++i) {
            Db_stmt_arg arg = (Db_stmt_arg) list.Get_at(i);
            if (arg.Crt)
                Fill_crt(stmt, arg.Tid, arg.Key, arg.Val);
            else
                Fill_val(stmt, arg.Tid, arg.Key, arg.Val);
        }
        list.Clear();
    }

    public static void Fill_crt(Db_stmt stmt, int tid, String key, Object val) {
        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Crt_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Crt_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Crt_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Crt_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Crt_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Crt_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Crt_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Crt_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Crt_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }
    }

    public static void Fill_val(Db_stmt stmt, int tid, String key, Object val) {
        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Val_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Val_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Val_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Val_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Val_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Val_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Val_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Val_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Val_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }


/*
XOWA: the XOWA Offline Wiki Application

The terms of each license can be found in the source code repository:

*/
package gplx.dbs.stmts;

import gplx.*;
import gplx.dbs.*;

public class Db_stmt_arg_list {

    private final List_adp list = List_adp_.New();

    public void Clear() {
        list.Clear();
    }

    public int Len() {
        return list.Len();
    }

    public Db_stmt_arg Get_at(int i) {
        return (Db_stmt_arg) list.Get_at(i);
    }

    public Db_stmt_arg_list Crt_int(String key, int val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__int, key, val);
    }

    public Db_stmt_arg_list Crt_str_by_bry(String key, byte[] val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, String_.new_u8(val));
    }

    public Db_stmt_arg_list Crt_str(String key, String val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, val);
    }

    public Db_stmt_arg_list Add(boolean crt, int tid, String key, Object val) {
        list.Add(new Db_stmt_arg(crt, tid, key, val));
        return this

    }

    public void Fill(Db_stmt stmt) {
        int len = list.Len();
        for (int i = 0; i < len; ++i) {
            Db_stmt_arg arg = (Db_stmt_arg) list.Get_at(i);
            if (arg.Crt)
                Fill_crt(stmt, arg.Tid, arg.Key, arg.Val);
            else
                Fill_val(stmt, arg.Tid, arg.Key, arg.Val);
        }
        list.Clear();
    }

    public static void Fill_crt(Db_stmt stmt, int tid, String key, Object val) {
        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Crt_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Crt_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Crt_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Crt_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Crt_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Crt_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Crt_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Crt_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Crt_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }
    }

    public static void Fill_val(Db_stmt stmt, int tid, String key, Object val) {
        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Val_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Val_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Val_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Val_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Val_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Val_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Val_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Val_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Val_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }
    }
}


if (arg.Crt)
                Fill_crt(stmt, arg.Tid, arg.Key, arg.Val);
            else
                Fill_val(stmt, arg.Tid, arg.Key, arg.Val);

/*
XOWA: the XOWA Offline Wiki Application

The terms of each license can be found in the source code repository:

*/
package gplx.dbs.stmts;

import gplx.*;
import gplx.dbs.*;

public class Db_stmt_arg_list {

    private final List_adp list = List_adp_.New();

    public void Clear() {
        list.Clear();
    }

    public int Len() {
        return list.Len();
    }

    public Db_stmt_arg Get_at(int i) {
        return (Db_stmt_arg) list.Get_at(i);
    }

    public Db_stmt_arg_list Crt_int(String key, int val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__int, key, val);
    }

    public Db_stmt_arg_list Crt_str_by_bry(String key, byte[] val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, String_.new_u8(val));
    }

    public Db_stmt_arg_list Crt_str(String key, String val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, val);
    }

    public Db_stmt_arg_list Add(boolean crt, int tid, String key, Object val) {
        list.Add(new Db_stmt_arg(crt, tid, key, val));
        return this;
    }

    public void Fill(Db_stmt stmt) {
        int len = list.Len();
        for (int i = 0; i < len; ++i) {
            Db_stmt_arg arg = (Db_stmt_arg) list.Get_at(i);

        }
        list.Clear();
    }

    public static void Fill_crt(Db_stmt stmt, int tid, String key, Object val) {
        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Crt_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Crt_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Crt_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Crt_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Crt_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Crt_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Crt_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Crt_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Crt_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }
    }

    public static void Fill_val(Db_stmt stmt, int tid, String key, Object val) {
        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Val_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Val_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Val_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Val_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Val_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Val_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Val_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Val_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Val_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }
    }
}


for (int i = 0; i < len; ++i) {
            Db_stmt_arg arg = (Db_stmt_arg) list.Get_at(i);
            if (arg.Crt)
                Fill_crt(stmt, arg.Tid, arg.Key, arg.Val);
            else
                Fill_val(stmt, arg.Tid, arg.Key, arg.Val);
        }

/*
XOWA: the XOWA Offline Wiki Application

The terms of each license can be found in the source code repository:

*/
package gplx.dbs.stmts;

import gplx.*;
import gplx.dbs.*;

public class Db_stmt_arg_list {

    private final List_adp list = List_adp_.New();

    public void Clear() {
        list.Clear();
    }

    public int Len() {
        return list.Len();
    }

    public Db_stmt_arg Get_at(int i) {
        return (Db_stmt_arg) list.Get_at(i);
    }

    public Db_stmt_arg_list Crt_int(String key, int val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__int, key, val);
    }

    public Db_stmt_arg_list Crt_str_by_bry(String key, byte[] val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, String_.new_u8(val));
    }

    public Db_stmt_arg_list Crt_str(String key, String val) {
        return Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, val);
    }

    public Db_stmt_arg_list Add(boolean crt, int tid, String key, Object val) {
        list.Add(new Db_stmt_arg(crt, tid, key, val));
        return this;
    }

    public void Fill(Db_stmt stmt) {
        int len = list.Len();

        list.Clear();
    }

    public static void Fill_crt(Db_stmt stmt, int tid, String key, Object val) {
        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Crt_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Crt_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Crt_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Crt_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Crt_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Crt_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Crt_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Crt_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Crt_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }
    }

    public static void Fill_val(Db_stmt stmt, int tid, String key, Object val) {
        switch(tid) {
            case Dbmeta_fld_tid.Tid__bool:
                stmt.Val_bool_as_byte(key, Bool_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__byte:
                stmt.Val_byte(key, Byte_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__int:
                stmt.Val_int(key, Int_.Cast(val));
                break;
            case Dbmeta_fld_tid.Tid__long:
                stmt.Val_long(key, Long_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__float:
                stmt.Val_float(key, Float_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__double:
                stmt.Val_double(key, Double_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__str:
                stmt.Val_str(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__text:
                stmt.Val_text(key, String_.cast(val));
                break;
            case Dbmeta_fld_tid.Tid__bry:
                stmt.Val_bry(key, Bry_.cast(val));
                break;
            default:
                throw Err_.new_unhandled_default(tid);
        }
    }
}


@Override
    public boolean check(String url, String recogninfo, String responseInfo)

package org.secbug.model;

import org.apache.log4j.Logger;
import org.secbug.conf.Context;

public class UrlCheckType implements CheckType {

    private Logger logger = Logger.getLogger(UrlCheckType.class);

{
        boolean falg = false;
        if (responseInfo.equals("true")) {
            falg = true;
            return falg;
        }
        logger.info("当前jobid：" + Context.jobid + " 检验状态：" + falg + " 识别内容：" + recogninfo + " URL：" + url);
        return falg;
    }
}


{
        boolean falg = false;
        if (responseInfo.equals("true")) {
            falg = true;
            return falg;
        }
        logger.info("当前jobid：" + Context.jobid + " 检验状态：" + falg + " 识别内容：" + recogninfo + " URL：" + url);
        return falg;
    }

package org.secbug.model;

import org.apache.log4j.Logger;
import org.secbug.conf.Context;

public class UrlCheckType implements CheckType {

    private Logger logger = Logger.getLogger(UrlCheckType.class);

    @Override
    public boolean check(String url, String recogninfo, String responseInfo)


package org.secbug.model;

import org.apache.log4j.Logger;
import org.secbug.conf.Context;

public class UrlCheckType implements CheckType {

    private Logger logger = Logger.getLogger(UrlCheckType.class);

    @Override
    public boolean check(String url, String recogninfo, String responseInfo) {

        if (responseInfo.equals("true")) {
            falg = true;
            return falg;
        }
        logger.info("当前jobid：" + Context.jobid + " 检验状态：" + falg + " 识别内容：" + recogninfo + " URL：" + url);
        return falg;
    }
}


if (responseInfo.equals("true")) {
            falg = true;
            return falg;
        }
        logger.info("当前jobid：" + Context.jobid + " 检验状态：" + falg + " 识别内容：" + recogninfo + " URL：" + url);

package org.secbug.model;

import org.apache.log4j.Logger;
import org.secbug.conf.Context;

public class UrlCheckType implements CheckType {

    private Logger logger = Logger.getLogger(UrlCheckType.class);

    @Override
    public boolean check(String url, String recogninfo, String responseInfo) {
        boolean falg = false;


package org.secbug.model;

import org.apache.log4j.Logger;
import org.secbug.conf.Context;

public class UrlCheckType implements CheckType {

    private Logger logger = Logger.getLogger(UrlCheckType.class);

    @Override
    public boolean check(String url, String recogninfo, String responseInfo) {
        boolean falg = false;
        if (responseInfo.equals("true")) {
            falg = true;
            return falg;
        }
        logger.info("当前jobid：" + Context.jobid + " 检验状态：" + falg + " 识别内容：" + recogninfo + " URL：" + url);


package org.secbug.model;

import org.apache.log4j.Logger;
import org.secbug.conf.Context;

public class UrlCheckType implements CheckType {

    private Logger logger = Logger.getLogger(UrlCheckType.class);

    @Override
    public boolean check(String url, String recogninfo, String responseInfo) {
        boolean falg = false;
        if (responseInfo.equals("true")) {
            falg = true;
            return falg;
        }
        logger.info("当前jobid：" + Context.jobid + " 检验状态：" + falg + " 识别内容：" + recogninfo + " URL：" + url);
        retu


if (responseInfo.equals("true")) {
            falg = true;
            return falg;
        }

        logger.info("当前jobid：" + Context.jobid + " 检验状态：" + falg + " 识别内容：" + recogninfo + " URL：" + url);
        return falg;
    }
}


package xapi.collect.impl;

import xapi.annotation.inject.InstanceDefault;
import xapi.collect.api.StringTo;
import xapi.fu.itr.MappedIterable;
import xapi.fu.Out2;
import xapi.fu.itr.SizedIterable;
import xapi.fu.itr.SizedIterator;
import xapi.platform.GwtDevPlatform;
import xapi.platform.JrePlatform;
import xapi.util.X_Runtime;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;

@JrePlatform
@GwtDevPlatform
@InstanceDefault(implFor = StringTo.class)
public class StringToAbstract<V> implements StringTo<V> {

    private static final long serialVersionUID = 7743120861632536635L;

    private final java.util.Map<String, V> map;

    private final Class<V> valueType;

    public StringToAbstract(Class<V> valueType) {
        this.valueType = valueType;
        if (isMultithreaded()) {
            map = new ConcurrentHashMap<>();
        } else {
            map = new HashMap<>();
        }
    }

    public <Generic extends V> StringToAbstract(Class<Generic> valueType, final Map<String, V> map) {
        this.valueType = Class.class.cast(valueType);
        this.map = map;
    }

    protected boolean isMultithreaded() {
        return X_Runtime.isMultithreaded();
    }

    @Override
    public SizedIterator<Out2<String, V>> iterator() {
        final MappedIterable<Entry<String, V>> entries = MappedIterable.mapped(entries());
        return SizedIterator.of(this::size, entries.map(Out2::fromEntry).iterator());
    }

    @Override
    public boolean isEmpty() {
        return map.isEmpty();
    }

{
        map.clear();
    }

    @Override
    public final boolean containsKey(final Object key) {
        return has((String) key);
    }

    public boolean has(String key) {
        return map.containsKey(key);
    }

    @Override
    public boolean containsValue(final Object key) {
        return map.containsValue(key);
    }

    @Override
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public void putEntries(final Iterable<java.util.Map.Entry<String, V>> items) {
        if (items instanceof java.util.Map) {
            map.putAll((java.util.Map) items);
        } else {
            for (final java.util.Map.Entry<String, V> item : items) {
                map.put(item.getKey(), item.getValue());
            }
        }
    }

    @Override
    public void addAll(Iterable<Out2<String, V>> items) {
        for (final Out2<String, V> item : items) {
            map.put(item.out1(), item.out2());
        }
    }

    @Override
    public void removeAll(final Iterable<String> items) {
        for (final String item : items) {
            map.remove(item);
        }
    }

    @Override
    public SizedIterable<String> keys() {
        return SizedIterable.of(this::size, map.keySet());
    }

    @Override
    public String[] keyArray() {
        return map.keySet().toArray(new String[0]);
    }

    @Override
    public Iterable<V> values() {
        return map.values();
    }

    @Override
    public Class<String> keyType() {
        return String.class;
    }

    @Override
    public Class<V> valueType() {
        return valueType;
    }

    @Override
    public Iterable<java.util.Map.Entry<String, V>> entries() {
        return map.entrySet();
    }

    @Override
    public V get(final String key) {
        return map.get(key);
    }

    @Override
    public V put(final String key, final V value) {
        if (value == null) {
            return map.remove(key);
        } else {
            return map.put(key, value);
        }
    }

    @Override
    public V remove(final String key) {
        return map.remove(key);
    }

    @Override
    public int size() {
        return map.size();
    }

    @Override
    public String toString() {
        return forEachItem().join(o -> o.join(" = "), "\n");
    }

    protected Collection<V> valueSet() {
        return map.values();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;
        final StringToAbstract<?> that = (StringToAbstract<?>) o;
        if (!map.equals(that.map))
            return false;
        return valueType != null ? valueType.equals(that.valueType) : that.valueType == null;
    }

    @Override
    public int hashCode() {
        int result = map.hashCode();
        result = 31 * result + (valueType != null ? valueType.hashCode() : 0);
        return result;
    }
}


{
        for (final String item : items) {
            map.remove(item);
        }
    }

package xapi.collect.impl;

import xapi.annotation.inject.InstanceDefault;
import xapi.collect.api.StringTo;
import xapi.fu.itr.MappedIterable;
import xapi.fu.Out2;
import xapi.fu.itr.SizedIterable;
import xapi.fu.itr.SizedIterator;
import xapi.platform.GwtDevPlatform;
import xapi.platform.JrePlatform;
import xapi.util.X_Runtime;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;

@JrePlatform
@GwtDevPlatform
@InstanceDefault(implFor = StringTo.class)
public class StringToAbstract<V> implements StringTo<V> {

    private static final long serialVersionUID = 7743120861632536635L;

    private final java.util.Map<String, V> map;

    private final Class<V> valueType;

    public StringToAbstract(Class<V> valueType) {
        this.valueType = valueType;
        if (isMultithreaded()) {
            map = new ConcurrentHashMap<>();
        } else {
            map = new HashMap<>();
        }
    }

    public <Generic extends V> StringToAbstract(Class<Generic> valueType, final Map<String, V> map) {
        this.valueType = Class.class.cast(valueType);
        this.map = map;
    }

    protected boolean isMultithreaded() {
        return X_Runtime.isMultithreaded();
    }

    @Override
    public SizedIterator<Out2<String, V>> iterator() {
        final MappedIterable<Entry<String, V>> entries = MappedIterable.mapped(entries());
        return SizedIterator.of(this::size, entries.map(Out2::fromEntry).iterator());
    }

    @Override
    public boolean isEmpty() {
        return map.isEmpty();
    }

    @Override
    public void clear() {
        map.clear();
    }

    @Override
    public final boolean containsKey(final Object key) {
        return has((String) key);
    }

    public boolean has(String key) {
        return map.containsKey(key);
    }

    @Override
    public boolean containsValue(final Object key) {
        return map.containsValue(key);
    }

    @Override
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public void putEntries(final Iterable<java.util.Map.Entry<String, V>> items) {
        if (items instanceof java.util.Map) {
            map.putAll((java.util.Map) items);
        } else {
            for (final java.util.Map.Entry<String, V> item : items) {
                map.put(item.getKey(), item.getValue());
            }
        }
    }

    @Override
    public void addAll(Iterable<Out2<String, V>> items) {
        for (final Out2<String, V> item : items) {
            map.put(item.out1(), item.out2());
        }
    }

    @Override
    public void removeAll(final Iterable<String> items)

    @Override
    public SizedIterable<String> keys() {
        return SizedIterable.of(this::size, map.keySet());
    }

    @Override
    public String[] keyArray() {
        return map.keySet().toArray(new String[0]);
    }

    @Override
    public Iterable<V> values() {
        return map.values();
    }

    @Override
    public Class<String> keyType() {
        return String.class;
    }

    @Override
    public Class<V> valueType() {
        return valueType;
    }

    @Override
    public Iterable<java.util.Map.Entry<String, V>> entries() {
        return map.entrySet();
    }

    @Override
    public V get(final String key) {
        return map.get(key);
    }

    @Override
    public V put(final String key, final V value) {
        if (value == null) {
            return map.remove(key);
        } else {
            return map.put(key, value);
        }
    }

    @Override
    public V remove(final String key) {
        return map.remove(key);
    }

    @Override
    public int size() {
        return map.size();
    }

    @Override
    public String toString() {
        return forEachItem().join(o -> o.join(" = "), "\n");
    }

    protected Collection<V> valueSet() {
        return map.values();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;
        final StringToAbstract<?> that = (StringToAbstract<?>) o;
        if (!map.equals(that.map))
            return false;
        return valueType != null ? valueType.equals(that.valueType) : that.valueType == null;
    }

    @Override
    public int hashCode() {
        int result = map.hashCode();
        result = 31 * result + (valueType != null ? valueType.hashCode() : 0);
        return result;
    }
}


package xapi.collect.impl;

import xapi.annotation.inject.InstanceDefault;
import xapi.collect.api.StringTo;
import xapi.fu.itr.MappedIterable;
import xapi.fu.Out2;
import xapi.fu.itr.SizedIterable;
import xapi.fu.itr.SizedIterator;
import xapi.platform.GwtDevPlatform;
import xapi.platform.JrePlatform;
import xapi.util.X_Runtime;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;

@JrePlatform
@GwtDevPlatform
@InstanceDefault(implFor = StringTo.class)
public class StringToAbstract<V> implements StringTo<V> {

    private static final long serialVersionUID = 7743120861632536635L;

    private final java.util.Map<String, V> map;

    private final Class<V> valueType;

    public StringToAbstract(Class<V> valueType) {
        this.valueType = valueType;
        if (isMultithreaded()) {
            map = new ConcurrentHashMap<>();
        } else {
            map = new HashMap<>();
        }
    }

    public <Generic extends V> StringToAbstract(Class<Generic> valueType, final Map<String, V> map) {
        this.valueType = Class.class.cast(valueType);
        this.map = map;
    }

    protected boolean isMultithreaded() {
        return X_Runtime.isMultithreaded();
    }

    @Override
    public SizedIterator<Out2<String, V>> iterator() {
        final MappedIterable<Entry<String, V>> entries = MappedIterable.mapped(entries());
        return SizedIterator.of(this::size, entries.map(Out2::fromEntry).iterator());
    }

    @Override
    public boolean isEmpty() {
        return map.isEmpty();
    }

    @Override
    public void clear() {
        map.clear();
    }

    @Override
    public final boolean containsKey(final Object key) {
        return has((String) key);
    }

    public boolean has(String key) {
        return map.containsKey(key);
    }

    @Override
    public boolean containsValue(final Object key) {
        return map.containsValue(key);
    }

    @Override
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public void putEntries(final Iterable<java.util.Map.Entry<String, V>> items) {

        if (items instanceof java.util.Map) {
            map.putAll((java.util.Map) items);
        } else {
            for (final java.util.Map.Entry<String, V> item : items) {
                map.put(item.getKey(), item.getValue());
            }
        }
    }

    @Override
    public void addAll(Iterable<Out2<String, V>> items) {
        for (final Out2<String, V> item : items) {
            map.put(item.out1(), item.out2());
        }
    }

    @Override
    public void removeAll(final Iterable<String> items) {
        for (final String item : items) {
            map.remove(item);
        }
    }

    @Override
    public SizedIterable<String> keys() {
        return SizedIterable.of(this::size, map.keySet());
    }

    @Override
    public String[] keyArray() {
        return map.keySet().toArray(new String[0]);
    }

    @Override
    public Iterable<V> values() {
        return map.values();
    }

    @Override
    public Class<String> keyType() {
        return String.class;
    }

    @Override
    public Class<V> valueType() {
        return valueType;
    }

    @Override
    public Iterable<java.util.Map.Entry<String, V>> entries() {
        return map.entrySet();
    }

    @Override
    public V get(final String key) {
        return map.get(key);
    }

    @Override
    public V put(final String key, final V value) {
        if (value == null) {
            return map.remove(key);
        } else {
            return map.put(key, value);
        }
    }

    @Override
    public V remove(final String key) {
        return map.remove(key);
    }

    @Override
    public int size() {
        return map.size();
    }

    @Override
    public String toString() {
        return forEachItem().join(o -> o.join(" = "), "\n");
    }

    protected Collection<V> valueSet() {
        return map.values();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;
        final StringToAbstract<?> that = (StringToAbstract<?>) o;
        if (!map.equals(that.map))
            return false;
        return valueType != null ? valueType.equals(that.valueType) : that.valueType == null;
    }

    @Override
    public int hashCode() {
        int result = map.hashCode();
        result = 31 * result + (valueType != null ? valueType.hashCode() : 0);
        return result;
    }
}


if (items instanceof java.util.Map) {
            map.putAll((java.util.Map) items);
        } else {
            for (final java.util.Map.Entry<String, V> item : items) {
                map.put(item.getKey(), item.getValue());
            }
        }

    }

    @Override
    public void addAll(Iterable<Out2<String, V>> items) {
        for (final Out2<String, V> item : items) {
            map.put(item.out1(), item.out2());
        }
    }

    @Override
    public void removeAll(final Iterable<String> items) {
        for (final String item : items) {
            map.remove(item);
        }
    }

    @Override
    public SizedIterable<String> keys() {
        return SizedIterable.of(this::size, map.keySet());
    }

    @Override
    public String[] keyArray() {
        return map.keySet().toArray(new String[0]);
    }

    @Override
    public Iterable<V> values() {
        return map.values();
    }

    @Override
    public Class<String> keyType() {
        return String.class;
    }

    @Override
    public Class<V> valueType() {
        return valueType;
    }

    @Override
    public Iterable<java.util.Map.Entry<String, V>> entries() {
        return map.entrySet();
    }

    @Override
    public V get(final String key) {
        return map.get(key);
    }

    @Override
    public V put(final String key, final V value) {
        if (value == null) {
            return map.remove(key);
        } else {
            return map.put(key, value);
        }
    }

    @Override
    public V remove(final String key) {
        return map.remove(key);
    }

    @Override
    public int size() {
        return map.size();
    }

    @Override
    public String toString() {
        return forEachItem().join(o -> o.join(" = "), "\n");
    }

    protected Collection<V> valueSet() {
        return map.values();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;
        final StringToAbstract<?> that = (StringToAbstract<?>) o;
        if (!map.equals(that.map))
            return false;
        return valueType != null ? valueType.equals(that.valueType) : that.valueType == null;
    }

    @Override
    public int hashCode() {
        int result = map.hashCode();
        result = 31 * result + (valueType != null ? valueType.hashCode() : 0);
        return result;
    }
}


package xapi.collect.impl;

import xapi.annotation.inject.InstanceDefault;
import xapi.collect.api.StringTo;
import xapi.fu.itr.MappedIterable;
import xapi.fu.Out2;
import xapi.fu.itr.SizedIterable;
import xapi.fu.itr.SizedIterator;
import xapi.platform.GwtDevPlatform;
import xapi.platform.JrePlatform;
import xapi.util.X_Runtime;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;

@JrePlatform
@GwtDevPlatform
@InstanceDefault(implFor = StringTo.class)
public class StringToAbstract<V> implements StringTo<V> {

    private static final long serialVersionUID = 7743120861632536635L;

    private final java.util.Map<String, V> map;

    private final Class<V> valueType;

    public StringToAbstract(Class<V> valueType) {
        this.valueType = valueType;
        if (isMultithreaded()) {
            map = new ConcurrentHashMap<>();
        } else {
            map = new HashMap<>();
        }
    }

    public <Generic extends V> StringToAbstract(Class<Generic> valueType, final Map<String, V> map) {
        this.valueType = Class.class.cast(valueType);
        this.map = map;
    }

    protected boolean isMultithreaded() {
        return X_Runtime.isMultithreaded();
    }

    @Override
    public SizedIterator<Out2<String, V>> iterator() {
        final MappedIterable<Entry<String, V>> entries = MappedIterable.mapped(entries());
        return SizedIterator.of(this::size, entries.map(Out2::fromEntry).iterator());
    }

    @Override
    public boolean isEmpty() {
        return map.isEmpty();
    }

    @Override
    public void clear() {
        map.clear();
    }

    @Override
    public final boolean containsKey(final Object key) {
        return has((String) key);
    }

    public boolean has(String key) {
        return map.containsKey(key);
    }

    @Override
    public boolean containsValue(final Object key) {
        return map.containsValue(key);
    }

    @Override
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public void putEntries(final Iterable<java.util.Map.Entry<String, V>> items) {
        if (items instanceof java.util.Map) {
            map.putAll((java.util.Map) items);
        } else {
            for (final java.util.Map.Entry<String, V> item : items) {
                map.put(item.getKey(), item.getValue());
            }
        }

    @Override
    public void addAll(Iterable<Out2<String, V>> items) {
        for (final Out2<String, V> item : items) {
            map.put(item.out1(), item.out2());
        }
    }

    @Override
    public void removeAll(final Iterable<String> items) {
        for (final String item : items) {
            map.remove(item);
        }
    }

    @Override
    public SizedIterable<String> keys() {
        return SizedIterable.of(this::size, map.keySet());
    }

    @Override
    public String[] keyArray() {
        return map.keySet().toArray(new String[0]);
    }

    @Override
    public Iterable<V> values() {
        return map.values();
    }

    @Override
    public Class<String> keyType() {
        return String.class;
    }

    @Override
    public Class<V> valueType() {
        return valueType;
    }

    @Override
    public Iterable<java.util.Map.Entry<String, V>> entries() {
        return map.entrySet();
    }

    @Override
    public V get(final String key) {
        return map.get(key);
    }

    @Override
    public V put(final String key, final V value) {
        if (value == null) {
            return map.remove(key);
        } else {
            return map.put(key, value);
        }
    }

    @Override
    public V remove(final String key) {
        return map.remove(key);
    }

    @Override
    public int size() {
        return map.size();
    }

    @Override
    public String toString() {
        return forEachItem().join(o -> o.join(" = "), "\n");
    }

    protected Collection<V> valueSet() {
        return map.values();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;
        final StringToAbstract<?> that = (StringToAbstract<?>) o;
        if (!map.equals(that.map))
            return false;
        return valueType != null ? valueType.equals(that.valueType) : that.valueType == null;
    }

    @Override
    public int hashCode() {
        int result = map.hashCode();
        result = 31 * result + (valueType != null ? valueType.hashCode() : 0);
        return result;
    }
}