class MockResource extends AbstractResource {

    private final String content;

    public MockResource(String path, String content) {
        super(path, URI.create("mock:" + path));
        this.content = content;
    }

    @Override
    public boolean exists() {
        return true;
    }

    @Override
    public Resource resolve(String other) {<FILL_FUNCTION_BODY>}

    @Override
    public Resource resolveSibling(String other) {
        return new MockResource(resolveSiblingPath(other), "Sibling resource to " + getPath());
    }

    @Override
    public InputStream openInputStream() throws IOException {
        return new ByteArrayInputStream(content.getBytes());
    }
}

        return new MockResource(resolvePath(other), "Resource relative to " + getPath());
    
<methods>public void <init>(java.lang.String, java.net.URI) ,public boolean equals(java.lang.Object) ,public java.lang.String getPath() ,public java.net.URI getUri() ,public int hashCode() ,public boolean isWritable() ,public java.io.OutputStream openOutputStream(liquibase.resource.OpenOptions) throws java.io.IOException,public java.lang.String toString() <variables>private final non-sealed java.lang.String path,private final non-sealed java.net.URI uri