def resolve(internal: InternalFrame, side: str) -> InternalFrame:

    def rename(col: str) -> str:
        return '__{}_{}'.format(side, col)
    internal = internal.resolved_copy
    sdf = internal.spark_frame
    sdf = sdf.select(*[scol_for(sdf, col).alias(rename(col)) for col in sdf.columns if (col not in HIDDEN_COLUMNS)], *HIDDEN_COLUMNS)
    return internal.copy(spark_frame=sdf, index_spark_columns=[scol_for(sdf, rename(col)) for col in internal.index_spark_column_names], index_fields=[field.copy(name=rename(field.name)) for field in internal.index_fields], data_spark_columns=[scol_for(sdf, rename(col)) for col in internal.data_spark_column_names], data_fields=[field.copy(name=rename(field.name)) for field in internal.data_fields])
def resolve(internal: InternalFrame, side: str) -> InternalFrame:

    def rename(col: str) -> str:
        return '__{}_{}'.format(side, col)
    internal = internal.resolved_copy
    sdf = internal.spark_frame
    sdf = sdf.select(*[scol_for(sdf, col).alias(rename(col)) for col in sdf.columns if (col not in HIDDEN_COLUMNS)], *HIDDEN_COLUMNS)
    return internal.copy(spark_frame=sdf, index_spark_columns=[scol_for(sdf, rename(col)) for col in internal.index_spark_column_names], index_fields=[field.copy(name=rename(field.name)) for field in internal.index_fields], data_spark_columns=[scol_for(sdf, rename(col)) for col in internal.data_spark_column_names], data_fields=[field.copy(name=rename(field.name)) for field in internal.data_fields])