public static DataNode parseWithSchema(final String text) {
        List<String> segments = Splitter.on(".").splitToList(text);
        boolean hasSchema = 3 == segments.size();
        if (!(2 == segments.size() || hasSchema)) {
            throw new InvalidDataNodeFormatException(text);
        }
        DataNode result = new DataNode(segments.get(0), segments.get(segments.size() - 1));
        if (hasSchema) {
            result.setSchemaName(segments.get(1));
        }
        return result;
    }
@Test
    void assertParseWithSchema() {
        DataNode actual = DataNodeUtils.parseWithSchema("ds_0.public.tbl_0");
        assertThat(actual.getDataSourceName(), is("ds_0"));
        assertThat(actual.getSchemaName(), is("public"));
        assertThat(actual.getTableName(), is("tbl_0"));
    }